diff --git a/.gitignore b/.gitignore index 32b712637..7f1f79b20 100644 --- a/.gitignore +++ b/.gitignore @@ -7,10 +7,12 @@ data/var/lib/plinth/*.sqlite3 data/var/lib/plinth/sessions/* data/var/lib/plinth/.ssh/ data/var/run/*.pid -doc/*.pdf -doc/*.html -doc/freedombox-manual.xml +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 bfc7af5b6..db2b52ff5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ run-unit-tests: - cp -r . /home/tester/plinth - chown -R tester:tester /home/tester/plinth - su -c "cd ~/plinth; python3 -m flake8 --exclude actions/domainname-change,actions/dynamicdns,actions/hostname-change,actions/networks plinth actions/*" tester - - su -c "cd ~/plinth; py.test-3 --cov=plinth --cov-report=html --cov-report=term" tester + - su -c "cd ~/plinth; py.test-3 --cov=plinth --cov-report=html:/home/tester/plinth/htmlcov --cov-report=term" tester - cp -r /home/tester/plinth/htmlcov test-coverage-report coverage: '/^TOTAL\s+.*\s+(\d+\.\d+%)$/' diff --git a/actions/gitweb b/actions/gitweb index b00926b93..e1688f4c4 100755 --- a/actions/gitweb +++ b/actions/gitweb @@ -27,6 +27,7 @@ import shutil import subprocess from plinth import action_utils +from plinth.modules.gitweb.forms import validate_repository from plinth.modules.gitweb.manifest import GIT_REPO_PATH @@ -49,6 +50,9 @@ def parse_arguments(): subparser.add_argument( '--is-private', required=False, default=False, action='store_true', help='Allow only authorized users to access this repository') + subparser.add_argument( + '--keep-ownership', required=False, default=False, action="store_true", + help='Do not chanege ownership of the repository directory') subparser = subparsers.add_parser( 'repo-info', help='Get information about the repository') @@ -165,6 +169,8 @@ def _set_access_status(repo, status): def subcommand_rename_repo(arguments): """Rename a repository.""" + validate_repository(arguments.oldname) + validate_repository(arguments.newname) oldpath = os.path.join(GIT_REPO_PATH, arguments.oldname + '.git') newpath = os.path.join(GIT_REPO_PATH, arguments.newname + '.git') os.rename(oldpath, newpath) @@ -172,21 +178,29 @@ def subcommand_rename_repo(arguments): def subcommand_set_repo_description(arguments): """Set description of the repository.""" + validate_repository(arguments.name) _set_repo_description(arguments.name, arguments.description) def subcommand_set_repo_owner(arguments): """Set repository's owner name.""" + validate_repository(arguments.name) _set_repo_owner(arguments.name, arguments.owner) def subcommand_set_repo_access(arguments): """Set repository's access status.""" + validate_repository(arguments.name) _set_access_status(arguments.name, arguments.access) def subcommand_repo_info(arguments): """Get information about repository.""" + validate_repository(arguments.name) + repo_path = os.path.join(GIT_REPO_PATH, arguments.name + '.git') + if not os.path.exists(repo_path): + raise RuntimeError('Repository not found') + print( json.dumps( dict(name=arguments.name, description=_get_repo_description( @@ -196,10 +210,13 @@ def subcommand_repo_info(arguments): def subcommand_create_repo(arguments): """Create a new git repository.""" - os.chdir(GIT_REPO_PATH) + validate_repository(arguments.name) repo_name = arguments.name + '.git' - subprocess.check_call(['git', 'init', '--bare', repo_name]) - subprocess.check_call(['chown', '-R', 'www-data:www-data', repo_name]) + subprocess.check_call(['git', 'init', '--bare', repo_name], + cwd=GIT_REPO_PATH) + if not arguments.keep_ownership: + subprocess.check_call(['chown', '-R', 'www-data:www-data', repo_name], + cwd=GIT_REPO_PATH) _set_repo_description(arguments.name, arguments.description) _set_repo_owner(arguments.name, arguments.owner) if arguments.is_private: @@ -208,6 +225,7 @@ def subcommand_create_repo(arguments): def subcommand_delete_repo(arguments): """Delete a git repository.""" + validate_repository(arguments.name) repo_path = os.path.join(GIT_REPO_PATH, arguments.name + '.git') shutil.rmtree(repo_path) diff --git a/actions/snapshot b/actions/snapshot index 84738fe5f..587f62a7f 100755 --- a/actions/snapshot +++ b/actions/snapshot @@ -201,6 +201,7 @@ def subcommand_list(_): for snapshot in snapshots: snapshot['is_default'] = (snapshot['number'] == default) + snapshots.reverse() print(json.dumps(snapshots)) diff --git a/actions/ssh b/actions/ssh index 8c3c0c8eb..1c3035304 100755 --- a/actions/ssh +++ b/actions/ssh @@ -15,7 +15,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Configuration helper for SSH server. """ @@ -28,6 +27,8 @@ import stat import subprocess import sys +import augeas + from plinth import action_utils @@ -47,6 +48,13 @@ def parse_arguments(): set_keys.add_argument('--username') set_keys.add_argument('--keys') + subparsers.add_parser('get-password-config', + help='Get SSH password auth configuration') + + set_password_config = subparsers.add_parser( + 'set-password-config', help='Set SSH password auth configuration') + set_password_config.add_argument('--value') + subparsers.required = True return parser.parse_args() @@ -107,6 +115,33 @@ def subcommand_set_keys(arguments): os.chmod(key_file_path, stat.S_IRUSR | stat.S_IWUSR) +def _load_augeas(): + """Initialize augeas for this app's configuration file.""" + aug = augeas.Augeas( + flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug.set('/augeas/load/Sshd/lens', 'Sshd.lns') + aug.set('/augeas/load/Sshd/incl[last() + 1]', '/etc/ssh/sshd_config') + aug.load() + + return aug + + +def subcommand_get_password_config(_): + """Retrieve value of password authentication from sshd configuration.""" + aug = _load_augeas() + field_path = '/files/etc/ssh/sshd_config/PasswordAuthentication' + get_value = aug.get(field_path) + print(get_value or 'yes') + + +def subcommand_set_password_config(arguments): + """Set value of password authentication in sshd configuration.""" + aug = _load_augeas() + aug.set('/files/etc/ssh/sshd_config/PasswordAuthentication', + arguments.value) + aug.save() + + def main(): """Parse arguments and perform all duties.""" arguments = parse_arguments() diff --git a/debian/changelog b/debian/changelog index f4b0dd856..9c4d3318e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,95 @@ +plinth (19.20) unstable; urgency=medium + + [ Veiko Aasa ] + * gitweb: Set correct access rights after enabling application + * gitweb: Add tests for actions script + * gitweb: Add functional tests + * gitweb: avoid global environment variables in Apache configuration + * gitweb: fix links that end with /HEAD + * gitweb: Validate repository name also in actions script + * gitweb: do not change working directory inside actions script + * sharing: Fix wrong links on Apache2 directory index page + + [ Fioddor Superconcentrado ] + * Translated using Weblate (German) + * Translated using Weblate (Spanish) + * d/po/es: New translation file + * d/po: Fix header comments + + [ Michael Breidenbach ] + * Translated using Weblate (German) + * Translated using Weblate (Swedish) + * Translated using Weblate (Swedish) + + [ Sunil Mohan Adapa ] + * debian: Remove plinth transitional package + * cfg: Fix test case failure due to incorrect path assumption + * gitlab-ci: Fix path for HTML coverage report generation + * gitweb: Set proper access after restoration of a backup + * setup: Don't include actions/__pycache__ during installation + * ssh: Fix flake8 failure by removing unused import + * config: Use AppView and cleanup custom code + * storage: Use AppView and cleanup custom code + * doc: Install using makefile instead of setup.py + * doc: Fetch and add Spanish manual + * help: Fix showing manual pages in fallback cases + * app: Fix a pytest warning in tests + * setup.py: Set development status classifier to production/stable + * setup.py: Add more topics to classifiers + * doc: Add developer documentation using Sphinx + * actions: Fix issue with docstring causing issues with Sphnix + * Translated using Weblate (Swedish) + + [ Pavel Borecki ] + * Translated using Weblate (Czech) + + [ Thomas Vincent ] + * Translated using Weblate (French) + * backups: Fix a typo in backups upload form + * Translated using Weblate (French) + + [ homycal ] + * Translated using Weblate (French) + + [ Mattias Münster ] + * Translated using Weblate (Swedish) + + [ Allan Nordhøy ] + * Translated using Weblate (Norwegian Bokmål) + * Translated using Weblate (French) + * Translated using Weblate (French) + + [ Nektarios Katakis ] + * ssh: Option for disabling password authentication + + [ Joseph Nuthalapati ] + * infinoted: Add missing manual page link + * doc: Add directory for development documentation + * doc: Skip empty lines when piping to wget + * doc: Fix Unicode issues with the manual + * doc: Remove language code from title + * doc: Move build scripts into separate directory + * doc: Minor cosmetic changes + * doc: Move English manual to manual/en directory + * help: Respect language preference when showing user manual + * snapshot: Sort snapshot list from newest to oldest + + [ Doma Gergő ] + * Translated using Weblate (Hungarian) + + [ Fred ] + * Translated using Weblate (French) + * Translated using Weblate (French) + + [ James Valleroy ] + * config: Implement get_initial and form_valid + * functional_tests: Update config form ids + * coquelicot: Change quotes to ASCII + * locale: Update translation strings + * doc: Fetch latest manual + + -- James Valleroy Mon, 04 Nov 2019 19:15:27 -0500 + plinth (19.19~bpo10+1) buster-backports; urgency=medium * Rebuild for buster-backports. diff --git a/debian/control b/debian/control index 599ead0c6..caf5b2951 100644 --- a/debian/control +++ b/debian/control @@ -14,7 +14,7 @@ Build-Depends: debhelper-compat (= 12), dblatex, dh-python, - docbook-utils, + docbook-xsl, e2fsprogs, gir1.2-nm-1.0, libjs-bootstrap, @@ -43,6 +43,7 @@ Build-Depends: python3-setuptools-git, python3-yaml, xmlto, + xsltproc Standards-Version: 4.4.1 Homepage: https://salsa.debian.org/freedombox-team/plinth Vcs-Git: https://salsa.debian.org/freedombox-team/plinth.git @@ -171,18 +172,3 @@ Description: easy to manage, privacy oriented home server This package provides the FreedomBox Service (Plinth) which installs, configures and manages all functions of FreedomBox. The service is managed using a web interface available at https://localhost/. - -Package: plinth -Architecture: all -Section: oldlibs -Depends: - ${misc:Depends}, - freedombox (>> 0.46.0), -Description: easy to manage, privacy oriented home server (transitional package) - FreedomBox is designed to be your own inexpensive server at home. It runs free - software and offers an increasing number of services ranging from a calendar or - jabber server to a wiki or VPN. A web interface allows you to easily install - and configure your apps. - . - This is a transitional package. It can safely be removed. plinth package has - been renamed to freedombox. diff --git a/debian/copyright b/debian/copyright index 00b05b8d2..a2bca8c0b 100644 --- a/debian/copyright +++ b/debian/copyright @@ -10,6 +10,9 @@ Copyright: 2011-2019 FreedomBox Authors License: AGPL-3+ Files: doc/*.xml + doc/*.rst + doc/*.png + doc/*.jpg Copyright: 2011-2019 FreedomBox Authors License: CC-BY-SA-4.0 diff --git a/debian/freedombox.doc-base b/debian/freedombox.doc-base index 1ce72d4b0..8ee348340 100644 --- a/debian/freedombox.doc-base +++ b/debian/freedombox.doc-base @@ -13,5 +13,5 @@ Abstract: easy to manage, privacy oriented home server Section: Network/Communication Format: HTML -Index: /usr/share/doc/freedombox/freedombox-manual.part.html +Index: /usr/share/doc/freedombox/manual/en/freedombox-manual.part.html Files: /usr/share/doc/freedombox/* diff --git a/debian/freedombox.docs b/debian/freedombox.docs index 86db8bce2..998caf3bc 100644 --- a/debian/freedombox.docs +++ b/debian/freedombox.docs @@ -1,5 +1,2 @@ README.md HACKING.md -doc/*.html -doc/*.pdf -doc/images diff --git a/debian/po/de.po b/debian/po/de.po index 45a34030d..a37fb89c9 100644 --- a/debian/po/de.po +++ b/debian/po/de.po @@ -1,8 +1,8 @@ -# Translation of s-nail debconf templates to German -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the s-nail package. -# +# Translation of plinth debconf templates to German +# Copyright (C) 2019 FreedomBox packaging team +# This file is distributed under the same license as the plinth package. # Helge Kreutzmann , 2018. +# msgid "" msgstr "" "Project-Id-Version: plinth 0.35.0\n" @@ -15,7 +15,7 @@ msgstr "" "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" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Type: note #. Description diff --git a/debian/po/es.po b/debian/po/es.po new file mode 100644 index 000000000..3a5a09c01 --- /dev/null +++ b/debian/po/es.po @@ -0,0 +1,37 @@ +# Translation of plinth debconf templates to Spanish +# Copyright (C) 2019 FreedomBox packaging team +# This file is distributed under the same license as the plinth package. +# Fioddor Superconcentrado , 2019 +# +msgid "" +msgstr "" +"Project-Id-Version: plinth 19.20\n" +"Report-Msgid-Bugs-To: plinth@packages.debian.org\n" +"POT-Creation-Date: 2018-07-03 16:39+0530\n" +"PO-Revision-Date: 2019-10-30 12:45+0100\n" +"Language-Team: Debian L10n Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.1.1\n" +"Last-Translator: Fioddor Superconcentrado \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Language: es\n" + +#. Type: note +#. Description +#: ../templates:1001 +msgid "FreedomBox first wizard secret - ${secret}" +msgstr "Secreto del asistente al primer arranque de FreedomBox - ${secret}" + +#. Type: note +#. Description +#: ../templates:1001 +msgid "" +"Please save this string. You will be asked to enter this in the first screen " +"after you launch the FreedomBox interface. In case you lose it, you can find " +"it in the file /var/lib/plinth/firstboot-wizard-secret." +msgstr "" +"Por favor, anote esta cadena de texto. Se le pedirá en la primera pantalla " +"al lanzar el interfaz web de FreedomBox. En caso de pérdida puede recuperarla" +" mirando el fichero /var/lib/plinth/firstboot-wizard-secret." diff --git a/debian/po/fr.po b/debian/po/fr.po index a7689db97..a1df34b13 100644 --- a/debian/po/fr.po +++ b/debian/po/fr.po @@ -1,8 +1,8 @@ # Translation of plinth debconf templates to French # Copyright (C) 2018 FreedomBox packaging team # This file is distributed under the same license as the plinth package. -# # Jean-Pierre Giraud , 2018. +# msgid "" msgstr "" "Project-Id-Version: plinth\n" diff --git a/debian/po/pt.po b/debian/po/pt.po index d83c380d5..e333c81ca 100644 --- a/debian/po/pt.po +++ b/debian/po/pt.po @@ -1,6 +1,6 @@ -# Copyright (C) 2018 THE PACKAGE'S COPYRIGHT HOLDER +# Translation of plinth debconf templates to Portuguese +# Copyright (C) 2019 FreedomBox packaging team # This file is distributed under the same license as the plinth package. -# # Rui Branco - DebianPT , 2018. # msgid "" diff --git a/debian/po/ru.po b/debian/po/ru.po index 5779b9475..42898b953 100644 --- a/debian/po/ru.po +++ b/debian/po/ru.po @@ -1,5 +1,5 @@ # Russian translation of plinth debconf template. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# Copyright (C) 2019 FreedomBox packaging team # This file is distributed under the same license as the plinth package. # Lev Lamberov . # diff --git a/doc/LetsEncrypt.raw.xml b/doc/LetsEncrypt.raw.xml deleted file mode 100644 index fff82c24a..000000000 --- a/doc/LetsEncrypt.raw.xml +++ /dev/null @@ -1,5 +0,0 @@ - - -
FreedomBox/Manual/LetsEncrypt92019-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
Certificates (Let's Encrypt)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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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/Makefile b/doc/Makefile index 220ff38c3..44e4ec3a5 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -15,10 +15,25 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # -MANUAL_URL="https://wiki.debian.org/FreedomBox/Manual?action=show&mimetype=text%2Fdocbook" OUTPUTS=freedombox-manual.pdf plinth.1 manual-pages +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" + +DESTDIR= +INSTALL_DIR=$(DESTDIR)/usr/share/doc/freedombox +SCRIPTS_DIR=scripts + +manual-pdfs=$(foreach lang,$(MANUAL_LANGUAGES),manual/$(lang)/freedombox-manual.pdf) +manual-xmls=$(patsubst %.pdf,%.xml,$(manual-pdfs)) +OUTPUTS=$(manual-pdfs) plinth.1 manual-pages + +INSTALL_OPTS=-D --mode=644 + # In order to debug various problems with the documents especially # intermediate LaTeX state, run make as follows: # @@ -28,11 +43,18 @@ OUTPUTS=freedombox-manual.pdf plinth.1 manual-pages # XMLTO_DEBUG_FLAGS= ifneq ($(DEBUG),) - XMLTO_DEBUG_FLAGS=--noclean -p '--debug' + XMLTO_DEBUG_FLAGS=--noclean -p '--debug' endif +.PHONY: all install all: $(OUTPUTS) +install: all + for file in $(manual-pages-part-html) $(manual-pdfs); do \ + install $(INSTALL_OPTS) -t $(INSTALL_DIR)/$$(dirname $${file}) \ + $${file} ; \ + done + # Do not edit the manual page in this directory. The manual is # maintained as separate pages on the FreedomBox wiki and aggregated # into a single page using the MoinMoin include feature. Then it is @@ -46,43 +68,69 @@ all: $(OUTPUTS) # commit it to the repository. The wiki page is already reviewed, so # commits that update the manual just using the 'fetch' target do not # require further reviews. -.PHONY: fetch -fetch: - wget --quiet -O - $(MANUAL_URL) | \ - xmllint --format --output freedombox-manual.raw.xml - - xsltproc fetch-images.xslt freedombox-manual.raw.xml | sort -u | \ - awk '{print "wget --quiet -O images/" $$1 " " $$2}' | sh - ./fetch-manual-pages +fetch-main-list:=$(foreach lang,$(MANUAL_LANGUAGES),fetch-main-$(lang)) +fetch-pages-list:=$(foreach lang,$(MANUAL_LANGUAGES),fetch-pages-$(lang)) + +.PHONY: fetch $(fetch-main-list) $(fetch-pages-list) +fetch: $(fetch-main-list) $(fetch-pages-list) + +fetch-main-%: lang = $* +fetch-main-%: lang-fragment = $(subst en/,,$*/) +$(fetch-main-list): fetch-main-%: + MANUAL_URL_LANG=$(subst {lang-fragment},$(lang-fragment),$(MANUAL_URL)) ; \ + wget --quiet -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 + +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) ; \ + for PAGE in $${PAGES} ; do \ + FILE="manual/$(lang)/$${PAGE}.raw.xml" ; \ + URL=$$(echo $${MANUAL_PAGE_URL_LANG} | sed "s/{page}/$${PAGE}/") ; \ + echo "Downloading $(lang) $${PAGE}" ; \ + wget --quiet --user-agent=Firefox -O $${FILE} $${URL} ; \ + done + +manual-pages-raw:=$(foreach lang,$(MANUAL_LANGUAGES),$(filter-out manual/%/freedombox-manual.raw.xml,$(wildcard manual/$(lang)/*.raw.xml))) +manual-pages-part-html:=$(patsubst %.raw.xml, %.part.html, $(manual-pages-raw)) $(foreach lang,$(MANUAL_LANGUAGES),manual/$(lang)/freedombox-manual.part.html) +manual-pages-html:=$(patsubst %.part.html, %.html, $(manual-pages-part-html)) +manual-pages-xml:=$(patsubst %.raw.xml, %.xml, $(manual-pages-raw)) .PHONY: manual-pages -manual-pages-list:=$(shell cat manual-pages.list) freedombox-manual -manual-pages-part-html:=$(patsubst %, %.part.html, $(manual-pages-list)) -manual-pages-html:=$(patsubst %, %.html, $(manual-pages-list)) -manual-pages-xml:=$(patsubst %, %.xml, $(manual-pages-list)) - manual-pages: $(manual-pages-part-html) -%.pdf: %.xml - xmlto $(XMLTO_DEBUG_FLAGS) --with-dblatex pdf $< +$(manual-pdfs): %.pdf: %.xml + xmlto $(XMLTO_DEBUG_FLAGS) --with-dblatex pdf -o $(dir $@) $< -%.part.html: %.html +$(manual-pages-part-html): %.part.html: %.html perl -pe 'BEGIN {undef $$/} s/.*]*>(.*)<\/body\s*>.*/$$1/si' $< > $@ -freedombox-manual.xml: freedombox-manual.raw.xml fixes.xslt - xsltproc --output $@ fixes.xslt $< +$(manual-xmls): %.xml: %.raw.xml $(SCRIPTS_DIR)/fixes.xslt + xsltproc --output $@ $(SCRIPTS_DIR)/fixes.xslt $< -%.xml: %.raw.xml manual-page-fixes.xslt - xsltproc --output $@ manual-page-fixes.xslt $< - ./post-processor remove-footer $@ - ./post-processor fix-wiki-urls $@ +$(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 $@ -%.html: %.xml - docbook2html --nochunks $< +$(manual-pages-html): %.html: %.xml + xsltproc --output $@ /usr/share/xml/docbook/stylesheet/docbook-xsl/xhtml5/docbook.xsl $< + rm -f $(dir $@)docbook.css %.1: %.xml xmlto man $< .PHONY: clean clean: - rm -f $(manual-pages-html) $(manual-pages-part-html) $(manual-pages-xml) + rm -f $(manual-pages-html) $(manual-pages-part-html) $(manual-pages-xml) $(manual-xmls) rm -f $(OUTPUTS) diff --git a/doc/Syncthing.raw.xml b/doc/Syncthing.raw.xml deleted file mode 100644 index de3fd1af3..000000000 --- a/doc/Syncthing.raw.xml +++ /dev/null @@ -1,5 +0,0 @@ - - -
FreedomBox/Manual/Syncthing132019-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
File Synchronization (Syncthing)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. Note: Syncthing is available in FreedomBox starting with Plinth 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 hidden 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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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/Tor.raw.xml b/doc/Tor.raw.xml deleted file mode 100644 index 86e93965a..000000000 --- a/doc/Tor.raw.xml +++ /dev/null @@ -1,5 +0,0 @@ - - -
FreedomBox/Manual/Tor192019-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
Anonymity Network (Tor)
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 Hidden Service to access your FreedomBoxTor Hidden 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 Hidden 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 Hidden 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 Hidden 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 Browser - Plinth Currently only HTTP (port 80), HTTPS (port 443), and SSH (port 22) are accessible through the Tor Hidden 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) 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 Plinth. At the bottom of the Tor page in Plinth, 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.
Using Tor SOCKS port (advanced)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.
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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/Transmission.raw.xml b/doc/Transmission.raw.xml deleted file mode 100644 index 168e5caa2..000000000 --- a/doc/Transmission.raw.xml +++ /dev/null @@ -1,5 +0,0 @@ - - -
FreedomBox/Manual/Transmission112019-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
BitTorrent (Transmission)
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. When you try to access this page, you will be required to login with a username and password. The default for both is "transmission". You can and should change the username and password using the configuration form in Plinth.
Known IssuesThe initial password is shown in the Plinth configuration form in a hashed format. This prevents it from being read or copied. However, after the password is changed, it is shown directly, without hashing.
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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/dev/Makefile b/doc/dev/Makefile new file mode 100644 index 000000000..bfc0d34a4 --- /dev/null +++ b/doc/dev/Makefile @@ -0,0 +1,41 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +# +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SPHINXAUTOBUILD = sphinx-autobuild +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +livehtml: Makefile + @$(SPHINXAUTOBUILD) -b html -r "\\.#.*" $(SPHINXOPTS) "$(SOURCEDIR)" "$(BUILDDIR)/html" diff --git a/doc/dev/_static/.gitkeep b/doc/dev/_static/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/doc/dev/_templates/layout.html b/doc/dev/_templates/layout.html new file mode 100644 index 000000000..aa02582ec --- /dev/null +++ b/doc/dev/_templates/layout.html @@ -0,0 +1,15 @@ +{%- extends "alabaster/layout.html" %} + +{%- block footer %} + + +{% endblock %} diff --git a/doc/dev/conf.py b/doc/dev/conf.py new file mode 100644 index 000000000..78ef99a9e --- /dev/null +++ b/doc/dev/conf.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +Configuration file for the Sphinx documentation builder. + +This file does only contain a selection of the most common options. For a full +list see the documentation: http://www.sphinx-doc.org/en/master/config +""" + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys + +sys.path.insert(0, os.path.abspath('../../')) + +# -- Project information ----------------------------------------------------- + +# pylint: disable=invalid-name +project = 'FreedomBox' +copyright = '2019, FreedomBox Authors' +author = 'FreedomBox Authors' + +# The short X.Y version +version = '' +# The full version, including alpha/beta/rc tags +release = '' + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.intersphinx', + 'sphinx.ext.todo', + 'sphinx.ext.viewcode', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + 'fixed_sidebar': True, + 'show_related': True, +} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'FreedomBoxdoc' + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'FreedomBox.tex', 'FreedomBox Documentation', + 'FreedomBox Authors', 'manual'), +] + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [(master_doc, 'freedombox', 'FreedomBox Documentation', [author], + 1)] + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'FreedomBox', 'FreedomBox Documentation', author, + 'FreedomBox', 'One line description of project.', 'Miscellaneous'), +] + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + +# -- Extension configuration ------------------------------------------------- + +# -- Options for intersphinx extension --------------------------------------- + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = { + 'python': ('https://docs.python.org/3', None), + 'django': ('https://docs.djangoproject.com/en/stable/', + 'https://docs.djangoproject.com/en/stable/_objects/'), +} + +# -- Options for todo extension ---------------------------------------------- + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + +# -- Options for autodoc extension ------------------------------------------- + +autodoc_default_options = { + 'special-members': '__init__', +} diff --git a/doc/dev/images/lets_encrypt_flow.png b/doc/dev/images/lets_encrypt_flow.png new file mode 100644 index 000000000..949387de4 Binary files /dev/null and b/doc/dev/images/lets_encrypt_flow.png differ diff --git a/doc/dev/index.rst b/doc/dev/index.rst new file mode 100644 index 000000000..595e618a2 --- /dev/null +++ b/doc/dev/index.rst @@ -0,0 +1,34 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +FreedomBox Developer Documentation +================================== + +This manual is meant for developers intending to develop app for FreedomBox. It +provides a step by step tutorial and an API reference. + +.. toctree:: + :maxdepth: 3 + :caption: Contents: + + tutorial/index + reference/index + +External References +=================== + +#. :doc:`Django Documentation - Getting Started ` + +#. `Debian Packaging Portal `_ + +#. `systemd System and Service Manager `_ + +#. `Bootstrap - CSS Library `_ + +#. `FreedomBox User Manual `_ + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/doc/dev/reference/action_utils.rst b/doc/dev/reference/action_utils.rst new file mode 100644 index 000000000..92c9c565d --- /dev/null +++ b/doc/dev/reference/action_utils.rst @@ -0,0 +1,10 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Action Utils +^^^^^^^^^^^^ + +Several utilities to help with the implementation of actions and diagnostic +tests are implemented in this module. + +.. automodule:: plinth.action_utils + :members: diff --git a/doc/dev/reference/actions.rst b/doc/dev/reference/actions.rst new file mode 100644 index 000000000..91d7cf59b --- /dev/null +++ b/doc/dev/reference/actions.rst @@ -0,0 +1,16 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Actions +^^^^^^^ + +FreedomBox's web front does not directly change any aspect of the underlying +operating system. Instead, it calls upon **actions**, as shell commands. Actions +live in ``/usr/share/plinth/actions`` directory. They require no interaction +beyond passing command line arguments or taking sensitive arguments via stdin. +They change the operation of the services and apps of the FreedomBox and nothing +else. These actions are also directly usable by a skilled administrator. + +The following documentation for the ``actions`` module. + +.. automodule:: plinth.actions + :members: run, superuser_run, run_as_user, _run diff --git a/doc/dev/reference/app.rst b/doc/dev/reference/app.rst new file mode 100644 index 000000000..45f5c1c35 --- /dev/null +++ b/doc/dev/reference/app.rst @@ -0,0 +1,7 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +App +--- + +.. autoclass:: plinth.app.App + :members: diff --git a/doc/dev/reference/app_module.rst b/doc/dev/reference/app_module.rst new file mode 100644 index 000000000..589b64481 --- /dev/null +++ b/doc/dev/reference/app_module.rst @@ -0,0 +1,37 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +App Module +---------- + +These methods are optionally provided by the module in which an app is +implemented and FreedomBox calls/uses them if they are present. + +.init() +^^^^^^^^^^^^^^^^^^^ + +Optional. This method is called by FreedomBox soon after all the applications +are loaded. The ``init()`` call order guarantees that other applications that +this application depends on will be initialized before this application is +initialized. + +.diagnose() +^^^^^^^^^^^^^^^^^^^^^^^ + +Optional. Called when the user invokes system-wide diagnostics by visiting +**System -> Diagnositcs**. This method must return an array of diagnostic +results. Each diagnostic result must be a two-tuple with first element as a +string that is shown to the user as name of the test and second element is the +result of the test. It must be one of ``passed``, ``failed``, ``error``. Example +return value: + +.. code-block:: python3 + + [('Check http://localhost/app is reachable', 'passed'), + ('Check configuration is sane', 'passed')] + +.depends +^^^^^^^^^^^^^^^^^^^^ + +Optional. This module property must contain a list of all apps that this +application depends on. The application is specified as string containing the +full module load path. For example, ``names``. diff --git a/doc/dev/reference/components/daemon.rst b/doc/dev/reference/components/daemon.rst new file mode 100644 index 000000000..293d715a5 --- /dev/null +++ b/doc/dev/reference/components/daemon.rst @@ -0,0 +1,7 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Daemon +^^^^^^ + +.. autoclass:: plinth.daemon.Daemon + :members: diff --git a/doc/dev/reference/components/domain.rst b/doc/dev/reference/components/domain.rst new file mode 100644 index 000000000..884f918a8 --- /dev/null +++ b/doc/dev/reference/components/domain.rst @@ -0,0 +1,10 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Domain Name +^^^^^^^^^^^ + +.. autoclass:: plinth.modules.names.components.DomainName + :members: + +.. autoclass:: plinth.modules.names.components.DomainType + :members: diff --git a/doc/dev/reference/components/firewall.rst b/doc/dev/reference/components/firewall.rst new file mode 100644 index 000000000..e15eafd02 --- /dev/null +++ b/doc/dev/reference/components/firewall.rst @@ -0,0 +1,7 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Firewall +^^^^^^^^ + +.. autoclass:: plinth.modules.firewall.components.Firewall + :members: diff --git a/doc/dev/reference/components/frontpage.rst b/doc/dev/reference/components/frontpage.rst new file mode 100644 index 000000000..5e185177f --- /dev/null +++ b/doc/dev/reference/components/frontpage.rst @@ -0,0 +1,7 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Frontpage +^^^^^^^^^ + +.. autoclass:: plinth.frontpage.Shortcut + :members: diff --git a/doc/dev/reference/components/index.rst b/doc/dev/reference/components/index.rst new file mode 100644 index 000000000..16c03c09f --- /dev/null +++ b/doc/dev/reference/components/index.rst @@ -0,0 +1,27 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Components +---------- + +.. toctree:: + :caption: Available components: + + menu + daemon + firewall + webserver + frontpage + domain + letsencrypt + +Base Classes +^^^^^^^^^^^^ + +.. autoclass:: plinth.app.Component + :members: + +.. autoclass:: plinth.app.LeaderComponent + :members: + +.. autoclass:: plinth.app.FollowerComponent + :members: diff --git a/doc/dev/reference/components/letsencrypt.rst b/doc/dev/reference/components/letsencrypt.rst new file mode 100644 index 000000000..84c423806 --- /dev/null +++ b/doc/dev/reference/components/letsencrypt.rst @@ -0,0 +1,7 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Let's Encrypt +^^^^^^^^^^^^^ + +.. autoclass:: plinth.modules.letsencrypt.components.LetsEncrypt + :members: diff --git a/doc/dev/reference/components/menu.rst b/doc/dev/reference/components/menu.rst new file mode 100644 index 000000000..9bb682c5a --- /dev/null +++ b/doc/dev/reference/components/menu.rst @@ -0,0 +1,7 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Menu +^^^^ + +.. autoclass:: plinth.menu.Menu + :members: diff --git a/doc/dev/reference/components/webserver.rst b/doc/dev/reference/components/webserver.rst new file mode 100644 index 000000000..896d66cca --- /dev/null +++ b/doc/dev/reference/components/webserver.rst @@ -0,0 +1,10 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Webserver +^^^^^^^^^ + +.. autoclass:: plinth.modules.apache.components.Webserver + :members: + +.. autoclass:: plinth.modules.apache.components.Uwsgi + :members: diff --git a/doc/dev/reference/forms.rst b/doc/dev/reference/forms.rst new file mode 100644 index 000000000..914438e59 --- /dev/null +++ b/doc/dev/reference/forms.rst @@ -0,0 +1,13 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Forms +----- + +.. autoclass:: plinth.forms.AppForm + :members: + +.. autoclass:: plinth.forms.DomainSelectionForm + :members: + +.. autoclass:: plinth.forms.CheckboxSelectMultipleWithReadOnly + :members: diff --git a/doc/dev/reference/index.rst b/doc/dev/reference/index.rst new file mode 100644 index 000000000..e8915e2a6 --- /dev/null +++ b/doc/dev/reference/index.rst @@ -0,0 +1,23 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +========= +Reference +========= + +This section describes the FreedomBox API that is most frequently used by apps. +Note that since FreedomBox is under development and has not yet declared a +stable API, this API is subject to change. This is not usually a problem because +all the FreedomBox apps currently reside in FreedomBox source repository itself +and are updated when the API is updated. + +.. toctree:: + + app + components/index + app_module + actions + action_utils + views + forms + +.. automodule:: plinth.modules.ttrss diff --git a/doc/dev/reference/views.rst b/doc/dev/reference/views.rst new file mode 100644 index 000000000..d7c99aaf2 --- /dev/null +++ b/doc/dev/reference/views.rst @@ -0,0 +1,7 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Views +----- + +.. autoclass:: plinth.views.AppView + :members: diff --git a/doc/dev/tutorial/beginning.rst b/doc/dev/tutorial/beginning.rst new file mode 100644 index 000000000..34f7818d9 --- /dev/null +++ b/doc/dev/tutorial/beginning.rst @@ -0,0 +1,65 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Part 1: Beginning +----------------- + +Before we begin +^^^^^^^^^^^^^^^ + +FreedomBox Service (Plinth) is a web interface built using Python3 and Django. +FreedomBox apps are simply Django applications within the project. Hence, for +the most part, writing a FreedomBox app is all about :doc:`writing a Django +application `. + +You should start by reading the :doc:`Django tutorial `. All +the concepts described there are applicable for how FreedomBox and its apps are +be built. + +Picking an app +^^^^^^^^^^^^^^ + +We must first, of course, pick an application to add to FreedomBox. For the +purpose of this tutorial, let us pick Transmission. Transmission daemon handles +Bitorrent file sharing. BitTorrent is a peer-to-peer file sharing protocol. + +.. important:: Choosing an app + + When choosing an application we must make sure that it respects users' + freedom and privacy. By choosing to use FreedomBox, users have explicitly made + a choice to keep the data with themselves, to not provide privacy compromising + data to centralized entities and to use Free Software that respects their + Software Freedom. These are not properties of *some* of the applications in + FreedomBox but all applications *must* adhere to these principles. Apps should + not even ask the users questions to this effect, because users have already + made a choice. + +Packaging the application +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Majority of the effort in creating an application for FreedomBox is to package +it for Debian and get it uploaded to Debian repositories. Going through the +process of packaging itself is outside the scope of this tutorial. It is, +however, well documented elsewhere. You should start at the `Debian Packaging +Portal `_. + +Debian packaging might seem like an unnecessary process that takes time with its +adherence to standards, review process, legal checks, etc. However, upon close +examination, one will find that without these steps the goals of the FreedomBox +project cannot be met. Some of the advantages of Debian packaging are listed +below: + +* Legal check ensures that proprietary licensed code or code with bad licenses + does not inadvertently creep in. + +* Libraries have to be packaged separately easing security handling. When a + security vulnerability is identified in a library, just the library will have + to be updated and not all the applications that depend on it. + +* Upgrades become smoother. The dependency handling of the packaging system, + configuration handling tools, tools to deal with various types of well known + files help with ensuring a proper upgrade. + +* Collaborative maintenance teams ensure that the package is well cared for even + if you get busy with other work and can't spend time on your package. + Following standards and using common infrastructure is critical to enable this + development methodology. diff --git a/doc/dev/tutorial/code.rst b/doc/dev/tutorial/code.rst new file mode 100644 index 000000000..4cde693a7 --- /dev/null +++ b/doc/dev/tutorial/code.rst @@ -0,0 +1,61 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Full Code +--------- + +Transmission app is already included in FreedomBox. Here is the full source for +the module for reference. + +plinth/modules/transmission/__init__.py +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. literalinclude:: ../../../plinth/modules/transmission/__init__.py + :language: python3 + +plinth/modules/transmission/forms.py +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. literalinclude:: ../../../plinth/modules/transmission/forms.py + :language: python3 + +plinth/modules/transmission/manifest.py +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. literalinclude:: ../../../plinth/modules/transmission/manifest.py + :language: python3 + +plinth/modules/transmission/urls.py +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. literalinclude:: ../../../plinth/modules/transmission/urls.py + :language: python3 + +plinth/modules/transmission/views.py +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. literalinclude:: ../../../plinth/modules/transmission/views.py + :language: python3 + +plinth/modules/transmission/data/etc/plinth/modules-enabled/transmission +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. literalinclude:: ../../../plinth/modules/transmission/data/etc/plinth/modules-enabled/transmission + :language: text + +plinth/modules/transmission/data/etc/apache2/conf-available/transmission-plinth.conf +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. literalinclude:: ../../../plinth/modules/transmission/data/etc/apache2/conf-available/transmission-plinth.conf + :language: apache + +plinth/modules/transmission/tests/__init__.py +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. literalinclude:: ../../../plinth/modules/transmission/tests/__init__.py + :language: python3 + +actions/transmission +^^^^^^^^^^^^^^^^^^^^ + +.. literalinclude:: ../../../actions/transmission + :language: python3 diff --git a/doc/dev/tutorial/components.rst b/doc/dev/tutorial/components.rst new file mode 100644 index 000000000..f3e9a8d59 --- /dev/null +++ b/doc/dev/tutorial/components.rst @@ -0,0 +1,181 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Part 4: Components +------------------ + +Managing a daemon +^^^^^^^^^^^^^^^^^ + +Transmission, like many services in the FreedomBox, requires a daemon to be +running in the system to work. When the app is enabled, the daemon should be +enabled. When the app is disabled, the daemon should be disabled. We should also +show the status of whether the daemon is running in the app's view. All of these +concerns are automatically handled by the framework if a +:class:`~plinth.daemon.Daemon` component is added to the app. Let us do that in +our app's class. + +.. code-block:: python3 + + from plinth.daemon import Daemon + + managed_services = ['transmission-daemon'] + + class TransmissionApp(app_module.App): + ... + + def __init__(self): + ... + + daemon = Daemon('daemon-transmission', managed_services[0]) + self.add(daemon) + + +The first argument to instantiate the :class:`~plinth.daemon.Daemon` class is a +unique ID. The second is the name of the `systemd +`_ unit file which manages +the daemon. + +Managing web server configuration +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Transmission provides a web interface to the user. This web interface needs to +be proxied through a web server for security and access control. We will need to +write a configuration snippet for Apache, the default web server on FreedomBox. +This configuration snippet needs to be activated when our app is enabled. The +configuration snippet needs to be deactivated when our app is disabled. All of +these concerns are automatically handled by the framework if a +:class:`~plinth.modules.apache.components.Webserver` component is added to the +app. Let us do that in our app's class. + +.. code-block:: python3 + + from plinth.modules.apache.components import Webserver + + class TransmissionApp(app_module.App): + ... + + def __init__(self): + ... + + webserver = Webserver('webserver-transmission', 'transmission-plinth') + self.add(webserver) + +The first argument to instantiate the +:class:`~plinth.modules.apache.components.Webserver` class is a unique ID. The +second is the name of the Apache2 web server configuration snippet that contains +the directives to proxy Transmission web interface via Apache2. We then need to +create the configuration file itself in ``tranmission-freedombox.conf``. + +.. code-block:: apache + + ## On all sites, provide Transmission on a default path: /transmission + + ProxyPass http://localhost:9091/transmission + + +Managing the firewall +^^^^^^^^^^^^^^^^^^^^^ + +FreedomBox has a tight firewall that closes off all TCP/UDP ports by default. If +a service needs to available to users on a port, it needs to open the ports in +firewalld, the default firewall configuration manager in FreedomBox. When the +app is enabled, the ports need to opened and when the app is disabled, the ports +needs to be closed. The FreedomBox framework again provides a component for +handling these operations. In case of our app, there is no need to open a +special port since the web ports are always kept open. However, it is still good +to specify that we operate on http/https ports so that users can be provided +this information along with additional information on whether the service is +available over Internet. Create the +:class:`~plinth.modules.firewall.components.Firewall` component during app +initialization. + +.. code-block:: python3 + + from plinth.modules.firewall.components import Firewall + + class TransmissionApp(app_module.App): + ... + + def __init__(self): + ... + + firewall = Firewall('firewall-transmission', name, + ports=['http', 'https'], is_external=True) + self.add(firewall) + +The first parameter is a unique ID. Second one is the name of the app that as +shown to the user in the firewall status page. Third argument is the list of +services known to firewalld as listed in ``/usr/lib/firewalld/services/``. +Custom services can also be written. The final argument decides whether the +service should be made available by FreedomBox from external networks, +essentially the Internet. + +User authentication and authorization +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +We wish that only users of FreedomBox should access the web interface of our +app. Further, only users belonging to a specially created group are the only +ones who should be able access the app. Again, FreedomBox handles all of this +and we simply need to declare and use. First we need to register a user group +with the FreedomBox framework in ``__init.py__``. + +.. code-block:: python3 + + group = ('bit-torrent', 'Download files using BitTorrent applications') + + def init(): + ... + register_group(group) + +Then in the Apache configuration snippet, we can mandate that only users of this +group (and, of course, admin users) should be allowed to access our app. In the +file ``tranmission-freedombox.conf``, add the following. + +.. code-block:: apache + + + ... + Include includes/freedombox-single-sign-on.conf + + TKTAuthToken "admin" "bit-torrent" + + + +Showing a shortcut in the front page +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The app view we have created is only accessible by administrators of FreedomBox +since only they can configure the app. Other users who have access to this app +should have a way of discovering the app. This is done by providing a link in +the front page of FreedomBox web interface. This is the page that user's see +when they visit FreedomBox. To provide this shortcut, a +:class:`~plinth.frontpage.Shortcut` component can added to the app. + +.. code-block:: python3 + + from plinth import frontpage + + group = ('bit-torrent', 'Download files using BitTorrent applications') + + class TransmissionApp(app_module.App): + ... + + def __init__(self): + ... + + shortcut = frontpage.Shortcut( + 'shortcut-transmission', name, short_description=short_description, + icon='transmission', url='/transmission', clients=clients, + login_required=True, allowed_groups=[group[0]]) + self.add(shortcut) + +The first parameter, as usual, is a unique ID. The next three parameters are +basic information about the app similar to the menu item. The URL parameter +specifies the URL that the user should be directed to when the shortcut is +clicked. This is the web interface provided by our app. The next parameter +provides a list of clients. This is useful for the FreedomBox mobile app when +the information is used to suggest installing mobile apps. This is described in +a later section of this tutorial. The next parameter specifies whether anonymous +users who are not logged into FreedomBox should be shown this shortcut. The +final parameter further restricts to which group of users this shortcut must be +shown. diff --git a/doc/dev/tutorial/customizing.rst b/doc/dev/tutorial/customizing.rst new file mode 100644 index 000000000..a7738f72c --- /dev/null +++ b/doc/dev/tutorial/customizing.rst @@ -0,0 +1,231 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Part 5: Customizing +------------------- + +Customizing the application page +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The view that we have written above requires a template file. A default template +file is provided by the framework. In some cases, we will need to customize this +template. Let us create a custom template file in ``transmission.html``. + +.. code-block:: django + + {% extends "app.html" %} + + {% load i18n %} + + {% block configuration %} + + {{ block.super }} + +

{% trans "Custom Section" %}

+ +

+ {% blocktrans trimmed %} + Custom paragraph content. + {% endblocktrans %} +

+ + {% endblock %} + +This template extends an existing template known as ``app.html``. This template +is available in FreedomBox core to provide all the basic layout, styling, menus, +JavaScript and CSS libraries required for a typical app view. We will override +the configuration area after inheriting from the app template and keep the rest +as is. ``{{ block.super }}`` adds back the overwritten content in the +``configuration`` block. + +Yet again, there is nothing special about the way this template is written. This +is a regular Django template. See :doc:`Django Template documentation +`. + +For styling and UI components, FreedomBox uses the Twitter Bootstrap project. +See `Bootstrap documentation `_ for reference. + +To start using our custom template, we need to pass this to our view. In +``views.py``, add the following line: + +.. code-block:: python3 + + class TransmissionAppView(AppView): + ... + template_name = 'transmission.html' + +Writing a configuration form +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Our app needs some configuration. So, we need to write a configuration form to +provide options to the user. Add the following to ``forms.py``. + +.. code-block:: python3 + + from django import forms + + from plinth.forms import AppForm + + + class TransmissionForm(AppForm): # pylint: disable=W0232 + """Transmission configuration form""" + download_dir = forms.CharField( + label='Download directory', + help_text='Directory where downloads are saved. If you change the ' + 'default directory, ensure that the new directory exists ' + 'and is writable by "debian-transmission" user.') + +This creates a Django form that shows a single option to set the download +directory for our Transmission app. This is how a regular Django form is built. +See :doc:`Django Forms documentation ` for more +information. + +.. tip: Too many options + + Resist the temptation to create a lot of configuration options. Although this + will put more control in the hands of the users, it will make FreedomBox less + usable. FreedomBox is a consumer product. Our target users are not technically + savvy and we have make most of the decisions on behalf of the user to make the + interface as simple and easy to use as possible. + +Applying the changes from the form +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The view we have created needs to display the form and process the form after +the user submits it. Let us implement that in ``views.py``. + +.. code-block:: python3 + + from django.contrib import messages + + from plinth import actions, views + + from .forms import TransmissionForm + + class TransmissionAppView(views.AppView): + ... + form_class = TransmissionForm + + def get_initial(self): + """Get the current settings from Transmission server.""" + status = super().get_initial() + configuration = actions.superuser_run('transmission', + ['get-configuration']) + configuration = json.loads(configuration) + status.update({ + key.translate(str.maketrans({ + '-': '_' + })): value + for key, value in configuration.items() + }) + return status + + def form_valid(self, form): + """Apply the changes submitted in the form.""" + old_status = form.initial + new_status = form.cleaned_data + + if old_status['download_dir'] != new_status['download_dir']: + new_configuration = { + 'download-dir': new_status['download_dir'], + } + + actions.superuser_run('transmission', ['merge-configuration'], + input=json.dumps(new_configuration).encode()) + messages.success(self.request, 'Configuration updated') + + return super().form_valid(form) + +We check to make sure that the configuration value has actually changed after +the form is submitted. Although FreedomBox's operations are idempotent, meaning +that running them twice will not be problematic, we still wish to avoid +unnecessary operations for the sake of speed. + +We are actually performing the operation using *actions*. We will implement this +action a bit later. + +After we perform the operation, we will show a message on the response page that +the action was successful or that nothing happened. We use the Django messaging +framework to accomplish this. See :doc:`Django messaging framework +` for more information. + +Writing actions +^^^^^^^^^^^^^^^ + +The actual work of performing the configuration change is carried out by an +*action*. Actions are independent scripts that run with higher privileges +required to perform a task. They are placed in a separate directory and invoked +as scripts via sudo. For our application we need to write an action that can +enable and disable the web configuration. We will do this by creating a file +``actions/transmission``. + +.. code-block:: python3 + + import argparse + import json + import sys + + from plinth import action_utils + + TRANSMISSION_CONFIG = '/etc/transmission-daemon/settings.json' + + + 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('get-configuration', + help='Return the current configuration') + subparsers.add_parser( + 'merge-configuration', + help='Merge JSON configuration from stdin with existing') + + subparsers.required = True + return parser.parse_args() + + + def subcommand_get_configuration(_): + """Return the current configuration in JSON format.""" + configuration = open(TRANSMISSION_CONFIG, 'r').read() + print(configuration) + + + def subcommand_merge_configuration(arguments): + """Merge given JSON configuration with existing configuration.""" + configuration = sys.stdin.read() + configuration = json.loads(configuration) + + current_configuration = open(TRANSMISSION_CONFIG, 'r').read() + current_configuration = json.loads(current_configuration) + + new_configuration = current_configuration + new_configuration.update(configuration) + new_configuration = json.dumps(new_configuration, indent=4, sort_keys=True) + + open(TRANSMISSION_CONFIG, 'w').write(new_configuration) + action_utils.service_reload('transmission-daemon') + + + 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() + +This is a simple Python3 program that parses command line arguments. While +Python3 is preferred, it can be written in other languages also. It may use +various helper utilities provided by the FreedomBox framework in +:obj:`plinth.action_utils` to easily perform it's duties. + +This script is automatically installed to ``/usr/share/plinth/actions`` by +FreedomBox's installation script ``setup.py``. Only from here will there is a +possibility of running the script under ``sudo``. If you are writing an +application that resides indenpendently of FreedomBox's source code, your app's +``setup.py`` script will need to take care of copying the file to this target +location. diff --git a/doc/dev/tutorial/finishing.rst b/doc/dev/tutorial/finishing.rst new file mode 100644 index 000000000..8f054ceb3 --- /dev/null +++ b/doc/dev/tutorial/finishing.rst @@ -0,0 +1,95 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Part 8: Finishing +----------------- + +Adding a License +^^^^^^^^^^^^^^^^ + +FreedomBox is licensed under the GNU Affero General Public License Version 3 or +later. FreedomBox apps, which run as modules under FreedomBox Service (Plinth), +also need to be under the same license or under a compatible license. The +license of our app needs to clear for our app to be accepted by users and other +developers. Let us add license headers to our application. + +.. code-block:: python3 + + # + # This file is part of FreedomBox. + # + # This program is free software: you can redistribute it and/or modify + # it under the terms of the GNU Affero General Public License as + # published by the Free Software Foundation, either version 3 of the + # License, or (at your option) any later version. + # + # This program 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 Affero General Public License for more details. + # + # You should have received a copy of the GNU Affero General Public License + # along with this program. If not, see . + # + +The above header needs to be present in every file of the application. It is +suitable for Python files. However, in template files, we need to modify it +slightly. + +.. code-block:: django + + {% extends "base.html" %} + {% comment %} + # + # This file is part of FreedomBox. + # + # This program is free software: you can redistribute it and/or modify + # it under the terms of the GNU Affero General Public License as + # published by the Free Software Foundation, either version 3 of the + # License, or (at your option) any later version. + # + # This program 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 Affero General Public License for more details. + # + # You should have received a copy of the GNU Affero General Public License + # along with this program. If not, see . + # + {% endcomment %} + +Coding standards +^^^^^^^^^^^^^^^^ + +For readability and easy collaboration it is important to follow common coding +standards. FreedomBox uses the Python coding standards and uses the ``pylint`` +and ``flake8`` tools to check if the there are any violations. Run these tools +on our application and fix any errors and warnings. Better yet, integrate these +tools into your favorite IDE for on-the-fly checking. + +For the most part, the code we have written so far, is already compliant with +the coding standards. This includes variable/method naming, indentation, +document strings, comments, etc. One thing we have to add are the module +documentation strings. Let us add those. In ``__init__.py`` add the top: + +.. code-block:: python3 + + """ + FreedomBox app to configure Transmission. + """ + +Contributing code to FreedomBox +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The ``HACKING.md`` and ``CONTRIBUTING.md`` files in the FredomBox source code +have tips on how to contribute code to the project. Be sure to read them if you +are submitting your app for including on the project. + +Here is ``HACKING.md``: + +.. literalinclude:: ../../../HACKING.md + :language: md + +Here is ``CONTRIBUTING.md``: + +.. literalinclude:: ../../../CONTRIBUTING.md + :language: md diff --git a/doc/dev/tutorial/index.rst b/doc/dev/tutorial/index.rst new file mode 100644 index 000000000..d34507ea4 --- /dev/null +++ b/doc/dev/tutorial/index.rst @@ -0,0 +1,48 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +===================================== +Tutorial: Writing Apps for FreedomBox +===================================== + +This tutorial covers writing an app for FreedomBox. FreedomBox is a pure blend +of Debian with a web interface, that configures its apps. We shall discuss +various aspects of building an app for FreedomBox, by creating an example app. +The app that is discussed in the tutorial already available in FreedomBox so you +can also study it's full source code. + +There are two parts to writing a FreedomBox app. First is to make sure that the +app is available as a Debian package uploaded to its repositories. This is the +majority of the work involved. However, if an app is already available in Debian +repositories, the whole task is simplified.. The second part of writing an app +for FreedomBox is to provide a thin web interface layer for configuring and +managing the app. This is done by extending FreedomBox's user interface to +provide visibility to the app and to let the user control its operations in a +highly simplified way. This layer is what we typically refer to as a 'FreedomBox +app'. + +FreedomBox apps can either be distributed to the end user as part of FreedomBox +Service (Plinth) source code by submitting the apps to the project or they can +distributed independently. This tutorial covers writing an app that is meant to +be distributed as part of FreedomBox Service (Plinth). However, writing +independent FreedomBox apps is also very similar and most of this tutorial is +applicable. + +.. note:: The term *App* + + The term app, in this tutorial, is used to mean multiple concepts. A service + or an application available to end users in FreedomBox is a combination of + Debian package and a web interface layer. The web interface layer is also + called a FreedomBox app which is very similar to and built upon a Django + application. + +.. toctree:: + + beginning + skeleton + view + components + customizing + setup + other + finishing + code diff --git a/doc/dev/tutorial/other.rst b/doc/dev/tutorial/other.rst new file mode 100644 index 000000000..0d66bbb4b --- /dev/null +++ b/doc/dev/tutorial/other.rst @@ -0,0 +1,222 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Part 7: Other Changes +--------------------- + +Showing information about app clients +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +It would be helpful to our users if we can show how they can use our app. If +there are desktop and mobile clients that can used to access our service, we +need to list them and present them. Let's add this information to +``manifest.py``. + +.. code-block:: python3 + + from plinth.clients import validate + + clients = validate([{ + 'name': _('Transmission'), + 'platforms': [{ + 'type': 'web', + 'url': '/transmission' + }] + }]) + +Since our app is a simple web application with no clients needed, we just list +that. We need to include this into the main app view. In ``__init__.py``, add: + +.. code-block:: python3 + + from .manifest import clients + + clients = clients + +In ``views.py``, add: + +.. code-block:: python3 + + from plinth.modules import transmission + + class TransmissionAppView(views.AppView): + ... + clients = transmission.clients + +Writing a manual page +^^^^^^^^^^^^^^^^^^^^^ + +The description of app should provide basic information on what the app is about +and how to use it. It is impractical, however, to explain everything about the +app in a few short paragraphs. So, we need to write a page about the app in the +FreedomBox manual. This page will be available to the users from within the +FreedomBox web interface. To make this happen, let us write a `manual page entry +`_ for our app in the +`FreedomBox Wiki `_ and then provide +a link to it from app page. In ``__init__.py``, add: + +.. code-block:: python3 + + manual_page = 'Transmission' + +Then, in ``views.py``, add: + +.. code-block:: python3 + + from plinth.modules import transmission + + class TransmissionAppView(views.AppView): + ... + manual_page = transmission.manual_page + +Adding backup/restore functionality +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Each app in FreedomBox needs to provide the ability to backup its configuration +and data. Apart from providing durability to users' data, this allows the user +to migrate from one machine to another. FreedomBox framework provides a simple +declarative mechanism to allow the app to be backed up and restored. In +``manifest.py``, add: + +.. code-block:: python3 + + from plinth.modules.backups.api import validate as validate_backup + + backup = validate_backup({ + 'data': { + 'directories': ['/var/lib/transmission-daemon/.config'] + }, + 'secrets': { + 'files': ['/etc/transmission-daemon/settings.json'] + }, + 'services': ['transmission-daemon'] + }) + +The data and secrets information specifies which list of files and directories +FreedomBox framework needs to backup. The list of services specifies which +daemons should be stopped during the backup process. In ``__init__.py``, add: + +.. code-block:: python3 + + from .manifest import backup + +Creating diagnostics +^^^^^^^^^^^^^^^^^^^^ + +When the app does not work as expected, the user should known what is happening +with the app. The FreedomBox framework provides an API for running and showing +diagnostics results. The app has to implement a method for actually running the +diagnostics and return the results as a list. FreedomBox then takes care of +calling the diagnostics method and displaying the list in a formatted manner. + +To implement the diagnostics, a method called ``diagnose()`` has to be available +as ``.diagnose()``. It must return a list in which each item is the +result of a test performed. The item itself is a two-tuple containing the +display name of the test followed by the result as ``passed``, ``failed`` or +``error``. + +.. code-block:: python3 + + def diagnose(): + """Run diagnostics and return the results.""" + results = [] + + results.extend(action_utils.diagnose_url_on_all( + 'https://{host}/transmission', extra_options=['--no-check-certificate'])) + + return results + +Now that we have implemented diagnostics, we also need to show a diagnostics +button in the App's page. Adding an attribute to the +:class:`~plinth.views.AppView` will take care of this. + +.. code-block:: python3 + + class TransmissionView(views.AppView): + ... + diagnostics_module_name = 'transmission' + +There are several helpers available to implement some of the common diagnostic +tests. For our application we wish to implement a test to check whether the +``/transmission`` URL is accessible. Since this is a commonly performed test, +there is a helper method available and we have used it in the above code. The +``{host}`` tag replaced with various IP addresses, hostnames and domain names by +the helper to produce different kinds of URLs and they are all tested. Results +for all tests are returned which we then pass on to the framework. + +The user can trigger the diagnostics test by going to **System -> Diagnostics** +page. This runs diagnostics for all the applications. Users can also run +diagnostics specifically for this app from the app's page. A diagnostics button +is shown by the `app.html` template automatically when +``diagnostics_module_name`` attribute is set in the app's ``AppView`` derived +from :obj:`plinth.views.AppView`. + +.. code-block:: django + + {% include "diagnostics_button.html" with module="ttrss" enabled=True %} + +Logging +^^^^^^^ + +Sometimes we may feel the need to write some debug messages to the console and +system logs. Doing this in FreedomBox is just like doing this any other Python +application. + +.. code-block:: python3 + + import logging + + logger = logging.getLogger(__name__) + + def example_method(): + logger.debug('A debug level message') + + logger.info('Showing application page - %s', request.method) + + try: + something() + except Exception as exception: + # Print stack trace + logger.exception('Encountered an exception - %s', exception) + +For more information see Python :doc:`logging framework ` +documentation. + +Internationalization +^^^^^^^^^^^^^^^^^^^^ + +Every string message that is visible to the user must be localized to user's +native language. For this to happen, our app needs to be internationalized. This +requires marking the user visible messages for translation. FreedomBox apps use +the Django's localization methods to make that happen. + +.. code-block:: python3 + + from django.utils.translation import ugettext_lazy as _ + + name = _('Transmission') + + short_description = _('BitTorrent Web Client') + + description = [ + _('BitTorrent is a peer-to-peer file sharing protocol. ' + 'Transmission daemon handles Bitorrent file sharing. Note that ' + 'BitTorrent is not anonymous.'), + _('Access the web interface at /transmission.') + ] + +Notice that the app's name, description, etc. are wrapped in the ``_()`` method +call. This needs to be done for the rest of our app. We use the +:obj:`~django.utils.translation.ugettext_lazy` in some cases and we use the +regular :obj:`~django.utils.translation.ugettext` in other cases. This is +because in the second case the :obj:`~django.utils.translation.gettext` lookup +is made once and reused for every user looking at the interface. These users may +each have a different language set for their interface. Lookup made for one +language for a user should not be used for other users. The ``_lazy`` methods +provided by Django makes sure that the return value is an object that will +actually be converted to string at the final moment when the string is being +displayed. In the first case, the lookup is made and string is returned +immediately. + +All of this is the usual way internationalization is done in Django. See +:doc:`Internationalization and localization ` +documentation for more information. diff --git a/doc/dev/tutorial/setup.rst b/doc/dev/tutorial/setup.rst new file mode 100644 index 000000000..5a3f111b7 --- /dev/null +++ b/doc/dev/tutorial/setup.rst @@ -0,0 +1,40 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Part 6: Setup +------------- + +Installing packages required for the app +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +So far, we haven't dealt with installing the packages needed for Transmission to +work. Nor did we take care of performing the initial configuration for +Transmission. FreedomBox takes care of installing all the Debian packages +required for our app to work. All we need to do is specify the list of the +Debian packages required in the ``setup()`` method that is called during +installation: + +.. code-block:: python3 + + managed_packages = ['transmission-daemon'] + + def setup(helper, old_version=None): + """Install and configure the module.""" + helper.install(managed_packages) + + new_configuration = { + 'rpc-whitelist-enabled': False, + 'rpc-authentication-required': False + } + helper.call('post', actions.superuser_run, 'transmission', + ['merge-configuration'], + input=json.dumps(new_configuration).encode()) + + helper.call('post', app.enable) + +The first time this app's view is accessed, FreedomBox shows an app installation +page and allows the user to install the app. After the app installation is +completed, the user is shown the app's configuration page. + +In case of our app Transmission, first we are installing the Debian packages, +then performing the first time configuration on the app using the action script +and finally enabling the app. diff --git a/doc/dev/tutorial/skeleton.rst b/doc/dev/tutorial/skeleton.rst new file mode 100644 index 000000000..771507d0a --- /dev/null +++ b/doc/dev/tutorial/skeleton.rst @@ -0,0 +1,102 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Part 2: Skeleton +---------------- + +Let us get started with creating our FreedomBox app. + +Creating the project structure +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Create a directory structure as follows with empty files. We will fill them up +in a step-by-step manner:: + + ─┬ / + ├─┬ plinth/ + │ └─┬ modules/ + │ └─┬ transmission/ + │ ├─ __init__.py + │ ├─ forms.py + │ ├─ manifest.py + │ ├─ urls.py + │ ├─ views.py + │ ├─┬ data/ + │ │ └─┬ etc/ + │ │ ├─┬ plinth/ + │ │ │ └─┬ modules-enabled/ + │ │ │ └─ transmission + │ │ └─┬ apache2/ + │ │ └─┬ conf-available/ + │ │ └─ transmission-freedombox.conf + │ └─┬ tests + │ └─ __init__.py + └─┬ actions/ + └─ transmission + +The file ``__init__.py`` indicates that the directory in which it is present is +a Python module. For now, it is an empty file. + +FreedomBox's setup script ``setup.py`` will automatically install the +``plinth/modules/transmission`` directory (along with other files described +later) to an appropriate location. If you are creating an app that stays +independent and outside of FreedomBox source tree, then ``setup.py`` script in +your source tree will need to install it to a proper location on the system. The +``plinth/modules/`` directory is a Python3 `namespace package +`_. So, you can install it with the +``plinth/modules/`` directory structure into any Python path and still be +discovered as ``plinth.modules.*``. + +Tell FreedomBox that our app exists +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The first thing to do is tell FreedomBox that our app exists. This is done by +writing a small file with the Python import path to our app and placing it in +``plinth/modules/transmission/data/etc/plinth/modules-enabled/``. Let us create +this file ``transmission``:: + + plinth.modules.transmission + +This file is automatically installed to ``/etc/plinth/modules-enabled/`` by +FreedomBox's installation script ``setup.py``. If we are writing a module that +resides independently outside the FreedomBox's source code, the setup script +will need to copy it to the target location. Further, it is not necessary for +the app to be part of the ``plinth.modules`` namespace. It can, for example, be +``freedombox_transmission``. + +Creating the App class +^^^^^^^^^^^^^^^^^^^^^^ + +In the FreedomBox framework, each app must be a class derived from the +:class:`plinth.app.App`. Let us to that in ``__init__.py``. We will fill up the +class later. + +.. code-block:: python3 + + from plinth import app as app_module + + class TransmissionApp(app_module.App): + """FreedomBox app for Transmission.""" + + app_id = 'transmission' + + def __init__(self): + """Create components for the app.""" + super().__init__() + +As soon as FreedomBox Service (Plinth) starts, it will load all the enabled +modules. After this, it gives a chance to each of the modules to initialize +itself by calling the ``init()`` method if there is such a method available as +``.init()``. The app class must be instantiated here. + +.. code-block:: python3 + + app = None + + 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) diff --git a/doc/dev/tutorial/view.rst b/doc/dev/tutorial/view.rst new file mode 100644 index 000000000..4e04cfb7e --- /dev/null +++ b/doc/dev/tutorial/view.rst @@ -0,0 +1,112 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Part 3: View +------------ + +Writing the URLs +^^^^^^^^^^^^^^^^ + +For a user to visit our app in FreedomBox, we need to provide a URL. When the +user visits this URL, a view is executed and a page is displayed. In ``urls.py`` +write the following: + +.. code-block:: python3 + + from django.conf.urls import url + + from .views import TransmissionAppView + + urlpatterns = [ + url(r'^apps/transmission/$', TransmissionAppView.as_view(), name='index'), + ] + +This routes the ``/apps/transmission/`` URL to a view called +``TransmissionAppView`` defined in ``plinth/modules/transmission/views.py``. +This is no different than how routing URLs is done in Django. See :doc:`Django +URL dispatcher ` for more information. + +Adding a menu item +^^^^^^^^^^^^^^^^^^ + +We have added a URL to be handled by our app but this does not yet show up to be +a link in FreedomBox web interface. Let us add a link in the apps list. In +``__init__.py`` add the following: + +.. code-block:: python3 + + from plinth.menu import main_menu + + name = 'Transmission' + + short_description = 'BitTorrent Web Client' + + description = [ + 'BitTorrent is a peer-to-peer file sharing protocol. ' + 'Transmission daemon handles Bitorrent file sharing. Note that ' + 'BitTorrent is not anonymous.', + 'Access the web interface at /transmission.' + ] + + class TransmissionApp(app_module.App): + ... + + def __init__(self): + ... + + menu_item = menu.Menu('menu-transmission', name, short_description, + 'transmission', 'transmission:index', + parent_url_name='apps') + self.add(menu_item) + +What this does is add a menu item component into the our app. In FreedomBox +framework, an app is made up of many simple components. When operations such as +enable/disable are performed on the app, they will be applied on all the +components. In case of menu components, FreedomBox framework takes care of +presenting them appropriately. The component captures various details about the +menu item we want to present. + +* The first parameter is simply a unique ID for the component. + +* The second parameter is the display name to use for our menu item which + happens to be the name of the app as well. + +* The third parameter is a short description for the menu item. + +* The fourth parameter is the name of the icon to use when showing the menu + item. An SVG file and a PNG should be created in the ``static/theme/icons/`` + directory. + +* The fifth parameter is the URL that the user should be directed to when the + menu item is clicked. This is a Django URL name and we have already created a + URL with this name. Note that when including our app's URLs, FreedomBox will + automatically set the name of the module as the Django URL namespace. Hence it + is ``transmission:index`` and not just ``index``. + +* We wish to add our menu item to the list of apps in the apps page which is why + we have specified ``apps`` as the parent URL for the this app in the final + parameter. + +Writing a view +^^^^^^^^^^^^^^ + +We have a URL pointing to our view. We have also added a menu item in the apps +section of the web interface that points to our view. We now need to create a +view to show the app page for our app. In ``views.py``, let us add a view. + +.. code-block:: python3 + + from plinth import views + from plinth.modules import transmission + + class TransmissionAppView(views.AppView): + """Serve configuration page.""" + name = transmission.name + description = transmission.description + app_id = 'transmission' + +The base view :class:`~plinth.views.AppView` takes care of a lot of details for +us. First, it shows basic information about the app like name, description, +desktop/mobiles clients for the service (described later), link to the manual +page (described later), link to diagnostics button, etc. Then it shows the +status of the app whether it is running and can also present a form for +configuration. It also presents a way to enable/disable the app. diff --git a/doc/fetch-manual-pages b/doc/fetch-manual-pages deleted file mode 100755 index 073526e1f..000000000 --- a/doc/fetch-manual-pages +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/python3 -# -# This file is part of FreedomBox. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program 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 Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -import re -import urllib.request - -MANUAL_PAGE_URL = "https://wiki.debian.org/FreedomBox/Manual/{}?action=show&mimetype=text%2Fdocbook" - -MANUAL_INDEX_RAW_URL = "https://wiki.debian.org/FreedomBox/Manual?action=raw" - -manual_pages = [] - -to_remove = ['QuickStart', 'GettingHelp', 'Developer'] - - -def list_manual_pages(): - """Fetch the list of manual pages and write them to a file. - """ - pattern = 'FreedomBox/Manual/\w+' - lst = list(urllib.request.urlopen(MANUAL_INDEX_RAW_URL)) - global manual_pages - manual_pages = list(l[0].split('/')[-1] for l in filter( - None, map(lambda x: re.findall(pattern, x.decode()), lst))) - for entry in to_remove: - if entry in manual_pages: - manual_pages.remove(entry) - with open('manual-pages.list', 'w') as lst_file: - lst_file.write('\n'.join(manual_pages)) - - -def fetch_manual_pages_in_docbook_format(): - for page in manual_pages: - url = MANUAL_PAGE_URL.format(page) - filename = '{}.raw.xml'.format(page) - urllib.request.urlretrieve(url, filename) - - -def main(): - list_manual_pages() - fetch_manual_pages_in_docbook_format() - - -if __name__ == '__main__': - main() diff --git a/doc/manual-pages.list b/doc/manual-pages.list deleted file mode 100644 index 24db9344a..000000000 --- a/doc/manual-pages.list +++ /dev/null @@ -1,44 +0,0 @@ -Apache_userdir -Tor -Transmission -Deluge -Minetest -Radicale -ejabberd -MatrixSynapse -Roundcube -Coquelicot -MLDonkey -Syncthing -Infinoted -Quassel -TinyTinyRSS -Repro -Shadowsocks -OpenVPN -Mumble -Privoxy -Searx -MediaWiki -Ikiwiki -I2P -Backups -Configure -Cockpit -DateTime -Diagnostics -DynamicDNS -Firewall -LetsEncrypt -Monkeysphere -NameServices -Networks -Power -PageKite -SecureShell -Security -ServiceDiscovery -Snapshots -Storage -Upgrades -Users \ No newline at end of file diff --git a/doc/Apache_userdir.raw.xml b/doc/manual/en/Apache_userdir.raw.xml similarity index 93% rename from doc/Apache_userdir.raw.xml rename to doc/manual/en/Apache_userdir.raw.xml index 17bfa8a9a..331f3b431 100644 --- a/doc/Apache_userdir.raw.xml +++ b/doc/manual/en/Apache_userdir.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Apache_userdir32019-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 (userdir)
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 Plinth
Using User websitesThe module is always enabled and offers no configuration from the Plinth web interface. Currently its existence is not even visible in the Plinth web interface. Using the modules capability to serve documents requires just to place the documents in the designated directory in a Plinth 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Apache_userdir32019-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 (userdir)
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 Plinth
Using User websitesThe module is always enabled and offers no configuration from the Plinth web interface. Currently its existence is not even visible in the Plinth web interface. Using the modules capability to serve documents requires just to place the documents in the designated directory in a Plinth 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Backups.raw.xml b/doc/manual/en/Backups.raw.xml similarity index 97% rename from doc/Backups.raw.xml rename to doc/manual/en/Backups.raw.xml index 2e8cc7e07..a87e291ba 100644 --- a/doc/Backups.raw.xml +++ b/doc/manual/en/Backups.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Backups302019-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 hidden 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Backups302019-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 hidden 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Cockpit.raw.xml b/doc/manual/en/Cockpit.raw.xml similarity index 96% rename from doc/Cockpit.raw.xml rename to doc/manual/en/Cockpit.raw.xml index 526d67493..385c5d5a2 100644 --- a/doc/Cockpit.raw.xml +++ b/doc/manual/en/Cockpit.raw.xml @@ -4,4 +4,4 @@ 'http://www.docbook.org/xml/4.4/docbookx.dtd'>
FreedomBox/Manual/Cockpit42019-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 Hidden 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Configure.raw.xml b/doc/manual/en/Configure.raw.xml similarity index 94% rename from doc/Configure.raw.xml rename to doc/manual/en/Configure.raw.xml index 154ebdc50..fd43f5baf 100644 --- a/doc/Configure.raw.xml +++ b/doc/manual/en/Configure.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Configure92019-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 (Plinth) 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 (Plinth) by typing into the browser. /freedombox can also be used as an alias to /plinth Tip: Bookmark the URL of FreedomBox Service (Plinth) 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Configure92019-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 (Plinth) 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 (Plinth) by typing into the browser. /freedombox can also be used as an alias to /plinth Tip: Bookmark the URL of FreedomBox Service (Plinth) 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Coquelicot.raw.xml b/doc/manual/en/Coquelicot.raw.xml similarity index 94% rename from doc/Coquelicot.raw.xml rename to doc/manual/en/Coquelicot.raw.xml index db83529de..e4e2a6eec 100644 --- a/doc/Coquelicot.raw.xml +++ b/doc/manual/en/Coquelicot.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Coquelicot72019-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
File Sharing (Coquelicot)
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 Plinth 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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Coquelicot72019-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
File Sharing (Coquelicot)
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 Plinth 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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/DateTime.raw.xml b/doc/manual/en/DateTime.raw.xml similarity index 91% rename from doc/DateTime.raw.xml rename to doc/manual/en/DateTime.raw.xml index 835d02b3c..4c7303517 100644 --- a/doc/DateTime.raw.xml +++ b/doc/manual/en/DateTime.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/DateTime22017-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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/DateTime22017-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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Deluge.raw.xml b/doc/manual/en/Deluge.raw.xml similarity index 94% rename from doc/Deluge.raw.xml rename to doc/manual/en/Deluge.raw.xml index 23338a3a6..3973b8adb 100644 --- a/doc/Deluge.raw.xml +++ b/doc/manual/en/Deluge.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Deluge112016-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
BitTorrent (Deluge)
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Deluge112016-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
BitTorrent (Deluge)
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Diagnostics.raw.xml b/doc/manual/en/Diagnostics.raw.xml similarity index 91% rename from doc/Diagnostics.raw.xml rename to doc/manual/en/Diagnostics.raw.xml index b6bf1f183..7f106abb5 100644 --- a/doc/Diagnostics.raw.xml +++ b/doc/manual/en/Diagnostics.raw.xml @@ -2,4 +2,4 @@ -
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/DynamicDNS.raw.xml b/doc/manual/en/DynamicDNS.raw.xml similarity index 96% rename from doc/DynamicDNS.raw.xml rename to doc/manual/en/DynamicDNS.raw.xml index 15fd534e2..9247470ee 100644 --- a/doc/DynamicDNS.raw.xml +++ b/doc/manual/en/DynamicDNS.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/DynamicDNS162019-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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/DynamicDNS162019-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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Firewall.raw.xml b/doc/manual/en/Firewall.raw.xml similarity index 98% rename from doc/Firewall.raw.xml rename to doc/manual/en/Firewall.raw.xml index 5eacd3a3b..de00e5dfa 100644 --- a/doc/Firewall.raw.xml +++ b/doc/manual/en/Firewall.raw.xml @@ -14,4 +14,4 @@ firewall-cmd --permanent --zone=internal --add-port=5353/udp]]> --remove-interface=]]>Example: To add an interface to a zone: --add-interface= firewall-cmd --permanent --zone= --add-interface=]]>Example: 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +firewall-cmd --permanent --zone=internal --add-interface=eth0]]>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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/I2P.raw.xml b/doc/manual/en/I2P.raw.xml similarity index 95% rename from doc/I2P.raw.xml rename to doc/manual/en/I2P.raw.xml index dd616c23a..0a9153d79 100644 --- a/doc/I2P.raw.xml +++ b/doc/manual/en/I2P.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/I2P12019-04-30 00:40:36SunilMohanAdapaInitial page for I2P application in FreedomBox
Anonymity Network (I2P)
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/I2P12019-04-30 00:40:36SunilMohanAdapaInitial page for I2P application in FreedomBox
Anonymity Network (I2P)
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Ikiwiki.raw.xml b/doc/manual/en/Ikiwiki.raw.xml similarity index 95% rename from doc/Ikiwiki.raw.xml rename to doc/manual/en/Ikiwiki.raw.xml index 9d138444d..c732b8666 100644 --- a/doc/Ikiwiki.raw.xml +++ b/doc/manual/en/Ikiwiki.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Ikiwiki92016-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
Wiki and Blog (Ikiwiki)
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 Plinth. 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 Plinth (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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Ikiwiki92016-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
Wiki and Blog (Ikiwiki)
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 Plinth. 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 Plinth (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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Infinoted.raw.xml b/doc/manual/en/Infinoted.raw.xml similarity index 91% rename from doc/Infinoted.raw.xml rename to doc/manual/en/Infinoted.raw.xml index a602ff38c..0d1ef2376 100644 --- a/doc/Infinoted.raw.xml +++ b/doc/manual/en/Infinoted.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Infinoted12017-01-21 17:23:17JamesValleroycreate page for infinoted
Gobby Server (infinoted)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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Infinoted12017-01-21 17:23:17JamesValleroycreate page for infinoted
Gobby Server (infinoted)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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/LetsEncrypt.raw.xml b/doc/manual/en/LetsEncrypt.raw.xml new file mode 100644 index 000000000..c97b0d840 --- /dev/null +++ b/doc/manual/en/LetsEncrypt.raw.xml @@ -0,0 +1,5 @@ + + +
FreedomBox/Manual/LetsEncrypt102019-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
Certificates (Let's Encrypt)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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/MLDonkey.raw.xml b/doc/manual/en/MLDonkey.raw.xml similarity index 94% rename from doc/MLDonkey.raw.xml rename to doc/manual/en/MLDonkey.raw.xml index f0919d283..81389deee 100644 --- a/doc/MLDonkey.raw.xml +++ b/doc/manual/en/MLDonkey.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/MLDonkey122019-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
File Sharing (MLDonkey)
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/MLDonkey122019-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
File Sharing (MLDonkey)
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/MatrixSynapse.raw.xml b/doc/manual/en/MatrixSynapse.raw.xml similarity index 95% rename from doc/MatrixSynapse.raw.xml rename to doc/manual/en/MatrixSynapse.raw.xml index 43d428b18..b4551891b 100644 --- a/doc/MatrixSynapse.raw.xml +++ b/doc/manual/en/MatrixSynapse.raw.xml @@ -7,4 +7,4 @@ 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: 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +echo 'select name from users' | sqlite3 /var/lib/matrix-synapse/homeserver.db ]]>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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/MediaWiki.raw.xml b/doc/manual/en/MediaWiki.raw.xml similarity index 94% rename from doc/MediaWiki.raw.xml rename to doc/manual/en/MediaWiki.raw.xml index 5f7c07379..756a86d56 100644 --- a/doc/MediaWiki.raw.xml +++ b/doc/manual/en/MediaWiki.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/MediaWiki92018-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
Wiki (MediaWiki)
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 page in the Plinth UI.
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 Content
Visual EditorMediaWiki's new Visual Editor gives a WYSIWYG user interface to creating wiki pages. Unfortunately, it is not yet available in the current version of MediaWiki on Debian. 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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/MediaWiki92018-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
Wiki (MediaWiki)
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 page in the Plinth UI.
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 Content
Visual EditorMediaWiki's new Visual Editor gives a WYSIWYG user interface to creating wiki pages. Unfortunately, it is not yet available in the current version of MediaWiki on Debian. 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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Minetest.raw.xml b/doc/manual/en/Minetest.raw.xml similarity index 91% rename from doc/Minetest.raw.xml rename to doc/manual/en/Minetest.raw.xml index d352edda8..3d0d6c8ad 100644 --- a/doc/Minetest.raw.xml +++ b/doc/manual/en/Minetest.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Minetest32017-01-02 13:29:19JamesValleroyfix list22017-01-02 13:26:03JamesValleroyadd port forwarding info12016-09-04 10:20:44Drahtseilstub created
Block Sandbox (Minetest)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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Minetest32017-01-02 13:29:19JamesValleroyfix list22017-01-02 13:26:03JamesValleroyadd port forwarding info12016-09-04 10:20:44Drahtseilstub created
Block Sandbox (Minetest)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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Monkeysphere.raw.xml b/doc/manual/en/Monkeysphere.raw.xml similarity index 92% rename from doc/Monkeysphere.raw.xml rename to doc/manual/en/Monkeysphere.raw.xml index fe526b92e..cb11fe4f4 100644 --- a/doc/Monkeysphere.raw.xml +++ b/doc/manual/en/Monkeysphere.raw.xml @@ -2,4 +2,4 @@ -
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Mumble.raw.xml b/doc/manual/en/Mumble.raw.xml similarity index 93% rename from doc/Mumble.raw.xml rename to doc/manual/en/Mumble.raw.xml index 96aa7ae1d..19735637a 100644 --- a/doc/Mumble.raw.xml +++ b/doc/manual/en/Mumble.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Mumble62017-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.
Voice Chat (Mumble)
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 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Mumble62017-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.
Voice Chat (Mumble)
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 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/NameServices.raw.xml b/doc/manual/en/NameServices.raw.xml similarity index 91% rename from doc/NameServices.raw.xml rename to doc/manual/en/NameServices.raw.xml index 11e5340b3..2a01af8f9 100644 --- a/doc/NameServices.raw.xml +++ b/doc/manual/en/NameServices.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/NameServices32016-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 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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/NameServices32016-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 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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Networks.raw.xml b/doc/manual/en/Networks.raw.xml similarity index 97% rename from doc/Networks.raw.xml rename to doc/manual/en/Networks.raw.xml index de7303625..6d74496b5 100644 --- a/doc/Networks.raw.xml +++ b/doc/manual/en/Networks.raw.xml @@ -6,4 +6,4 @@ wifi.scan-rand-mac-address=no]]>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.
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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/OpenVPN.raw.xml b/doc/manual/en/OpenVPN.raw.xml similarity index 96% rename from doc/OpenVPN.raw.xml rename to doc/manual/en/OpenVPN.raw.xml index 03eb27231..42341730f 100644 --- a/doc/OpenVPN.raw.xml +++ b/doc/manual/en/OpenVPN.raw.xml @@ -4,4 +4,4 @@ 'http://www.docbook.org/xml/4.4/docbookx.dtd'>
FreedomBox/Manual/OpenVPN152019-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]
Virtual Private Network (OpenVPN)
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 Plinth 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]]>
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.
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +proto udp]]>
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]]>
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.
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/PageKite.raw.xml b/doc/manual/en/PageKite.raw.xml similarity index 93% rename from doc/PageKite.raw.xml rename to doc/manual/en/PageKite.raw.xml index 1bd99063f..326c73220 100644 --- a/doc/PageKite.raw.xml +++ b/doc/manual/en/PageKite.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/PageKite122017-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
Public Visibility (PageKite)
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 Plinth, 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/PageKite122017-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
Public Visibility (PageKite)
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 Plinth, 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Power.raw.xml b/doc/manual/en/Power.raw.xml similarity index 91% rename from doc/Power.raw.xml rename to doc/manual/en/Power.raw.xml index 36ff99b3c..c65e1fbaa 100644 --- a/doc/Power.raw.xml +++ b/doc/manual/en/Power.raw.xml @@ -2,4 +2,4 @@ -
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Privoxy.raw.xml b/doc/manual/en/Privoxy.raw.xml similarity index 95% rename from doc/Privoxy.raw.xml rename to doc/manual/en/Privoxy.raw.xml index 86af75386..082a8d90a 100644 --- a/doc/Privoxy.raw.xml +++ b/doc/manual/en/Privoxy.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Privoxy112019-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
Web Proxy (Privoxy)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 Plinth 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Privoxy112019-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
Web Proxy (Privoxy)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 Plinth 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Quassel.raw.xml b/doc/manual/en/Quassel.raw.xml similarity index 97% rename from doc/Quassel.raw.xml rename to doc/manual/en/Quassel.raw.xml index 805c83565..d267d9a39 100644 --- a/doc/Quassel.raw.xml +++ b/doc/manual/en/Quassel.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Quassel72019-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
IRC Client (Quassel)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 Plinth 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.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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Quassel72019-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
IRC Client (Quassel)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 Plinth 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.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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Radicale.raw.xml b/doc/manual/en/Radicale.raw.xml similarity index 98% rename from doc/Radicale.raw.xml rename to doc/manual/en/Radicale.raw.xml index 5fe9a85c0..bdc0d629b 100644 --- a/doc/Radicale.raw.xml +++ b/doc/manual/en/Radicale.raw.xml @@ -26,4 +26,4 @@ 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.
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +(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.
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Repro.raw.xml b/doc/manual/en/Repro.raw.xml similarity index 93% rename from doc/Repro.raw.xml rename to doc/manual/en/Repro.raw.xml index aed456f49..c0cb4e7be 100644 --- a/doc/Repro.raw.xml +++ b/doc/manual/en/Repro.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Repro82019-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
SIP Server (repro)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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Repro82019-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
SIP Server (repro)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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Roundcube.raw.xml b/doc/manual/en/Roundcube.raw.xml similarity index 94% rename from doc/Roundcube.raw.xml rename to doc/manual/en/Roundcube.raw.xml index 5a9097449..6469c454e 100644 --- a/doc/Roundcube.raw.xml +++ b/doc/manual/en/Roundcube.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Roundcube82019-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
Email Client (Roundcube)
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Roundcube82019-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
Email Client (Roundcube)
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Searx.raw.xml b/doc/manual/en/Searx.raw.xml similarity index 94% rename from doc/Searx.raw.xml rename to doc/manual/en/Searx.raw.xml index cd4dc966b..3c11f5896 100644 --- a/doc/Searx.raw.xml +++ b/doc/manual/en/Searx.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Searx82019-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
Web Search (Searx)
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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Searx82019-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
Web Search (Searx)
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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/SecureShell.raw.xml b/doc/manual/en/SecureShell.raw.xml similarity index 95% rename from doc/SecureShell.raw.xml rename to doc/manual/en/SecureShell.raw.xml index 9c15e463b..940d0ae4b 100644 --- a/doc/SecureShell.raw.xml +++ b/doc/manual/en/SecureShell.raw.xml @@ -5,4 +5,4 @@
FreedomBox/Manual/SecureShell122019-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
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
Plinth First Log In: Admin AccountWhen creating an account in Plinth 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 Plinth, then you don't need to do this. You can use the user account created in Plinth 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 Plinth 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 Plinth you have enabled hidden 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 hidden service address for your 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 Plinth, use the change password page. However, the fbx default user is not managed by Plinth and its password cannot be changed in the web interface. 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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 + 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: Replace USERNAME with, e.g., an admin username, and ADDRESS with the hidden service address for your 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 Plinth, use the change password page. However, the fbx default user is not managed by Plinth and its password cannot be changed in the web interface. 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. 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Security.raw.xml b/doc/manual/en/Security.raw.xml similarity index 92% rename from doc/Security.raw.xml rename to doc/manual/en/Security.raw.xml index 9eacd6bbf..2e1381ce1 100644 --- a/doc/Security.raw.xml +++ b/doc/manual/en/Security.raw.xml @@ -2,4 +2,4 @@ -
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/ServiceDiscovery.raw.xml b/doc/manual/en/ServiceDiscovery.raw.xml similarity index 92% rename from doc/ServiceDiscovery.raw.xml rename to doc/manual/en/ServiceDiscovery.raw.xml index 733c5d89f..f5ed33943 100644 --- a/doc/ServiceDiscovery.raw.xml +++ b/doc/manual/en/ServiceDiscovery.raw.xml @@ -2,4 +2,4 @@ -
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Shadowsocks.raw.xml b/doc/manual/en/Shadowsocks.raw.xml similarity index 93% rename from doc/Shadowsocks.raw.xml rename to doc/manual/en/Shadowsocks.raw.xml index 33761ed49..68ae26f54 100644 --- a/doc/Shadowsocks.raw.xml +++ b/doc/manual/en/Shadowsocks.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Shadowsocks22019-05-10 22:54:33JamesValleroyremove wiki links12018-01-04 19:59:57David Jones
SOCKS5 proxy (Shadowsocks)
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 Plinth 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Shadowsocks22019-05-10 22:54:33JamesValleroyremove wiki links12018-01-04 19:59:57David Jones
SOCKS5 proxy (Shadowsocks)
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 Plinth 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Snapshots.raw.xml b/doc/manual/en/Snapshots.raw.xml similarity index 91% rename from doc/Snapshots.raw.xml rename to doc/manual/en/Snapshots.raw.xml index 7e774d59d..35d8ae849 100644 --- a/doc/Snapshots.raw.xml +++ b/doc/manual/en/Snapshots.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Snapshots22018-03-10 15:11:41JosephNuthalapatiFix oversized image12017-11-14 02:24:01JamesValleroynew page for snapshots module
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Snapshots22018-03-10 15:11:41JosephNuthalapatiFix oversized image12017-11-14 02:24:01JamesValleroynew page for snapshots module
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Storage.raw.xml b/doc/manual/en/Storage.raw.xml similarity index 93% rename from doc/Storage.raw.xml rename to doc/manual/en/Storage.raw.xml index 77ce41ebf..2a884109a 100644 --- a/doc/Storage.raw.xml +++ b/doc/manual/en/Storage.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Storage112018-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 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Storage112018-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 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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.xml b/doc/manual/en/Syncthing.raw.xml new file mode 100644 index 000000000..dbbc55f46 --- /dev/null +++ b/doc/manual/en/Syncthing.raw.xml @@ -0,0 +1,5 @@ + + +
FreedomBox/Manual/Syncthing172019-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
File Synchronization (Syncthing)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 hidden 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/TinyTinyRSS.raw.xml b/doc/manual/en/TinyTinyRSS.raw.xml similarity index 96% rename from doc/TinyTinyRSS.raw.xml rename to doc/manual/en/TinyTinyRSS.raw.xml index 24ada828e..d9c69d177 100644 --- a/doc/TinyTinyRSS.raw.xml +++ b/doc/manual/en/TinyTinyRSS.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/TinyTinyRSS102018-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
News Feed Reader (Tiny Tiny RSS)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 Plinth 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/TinyTinyRSS102018-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
News Feed Reader (Tiny Tiny RSS)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 Plinth 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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.xml b/doc/manual/en/Tor.raw.xml new file mode 100644 index 000000000..ef94de5eb --- /dev/null +++ b/doc/manual/en/Tor.raw.xml @@ -0,0 +1,5 @@ + + +
FreedomBox/Manual/Tor212019-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
Anonymity Network (Tor)
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 Hidden Service to access your FreedomBoxTor Hidden 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 Hidden 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 Hidden 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 Hidden 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 Browser - Plinth Currently only HTTP (port 80), HTTPS (port 443), and SSH (port 22) are accessible through the Tor Hidden 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 Plinth. At the bottom of the Tor page in Plinth, 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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.xml b/doc/manual/en/Transmission.raw.xml new file mode 100644 index 000000000..319af2beb --- /dev/null +++ b/doc/manual/en/Transmission.raw.xml @@ -0,0 +1,5 @@ + + +
FreedomBox/Manual/Transmission142019-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
BitTorrent (Transmission)
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Upgrades.raw.xml b/doc/manual/en/Upgrades.raw.xml similarity index 95% rename from doc/Upgrades.raw.xml rename to doc/manual/en/Upgrades.raw.xml index 5db2bfed3..ca9914fb4 100644 --- a/doc/Upgrades.raw.xml +++ b/doc/manual/en/Upgrades.raw.xml @@ -9,4 +9,4 @@ Password: # 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: 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +# 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: 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/Users.raw.xml b/doc/manual/en/Users.raw.xml similarity index 93% rename from doc/Users.raw.xml rename to doc/manual/en/Users.raw.xml index 3c15f9604..ca28b1fe9 100644 --- a/doc/Users.raw.xml +++ b/doc/manual/en/Users.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/Users82019-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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/Users82019-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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/ejabberd.raw.xml b/doc/manual/en/ejabberd.raw.xml similarity index 94% rename from doc/ejabberd.raw.xml rename to doc/manual/en/ejabberd.raw.xml index eb897fecb..61e155013 100644 --- a/doc/ejabberd.raw.xml +++ b/doc/manual/en/ejabberd.raw.xml @@ -2,4 +2,4 @@ -
FreedomBox/Manual/ejabberd122019-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
Chat Server (ejabberd)
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 Plinth 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Sunday, October 27th at 17: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 +
FreedomBox/Manual/ejabberd122019-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
Chat Server (ejabberd)
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 Plinth 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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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/freedombox-manual.raw.xml b/doc/manual/en/freedombox-manual.raw.xml similarity index 98% rename from doc/freedombox-manual.raw.xml rename to doc/manual/en/freedombox-manual.raw.xml index 4dd04136e..eebafda93 100644 --- a/doc/freedombox-manual.raw.xml +++ b/doc/manual/en/freedombox-manual.raw.xml @@ -776,6 +776,31 @@ +
+ Burger menu + FreedomBox's web interface (Plinth) 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 + + + +
@@ -1148,19 +1173,22 @@ dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of=The following apps can be accessed over Tor. Note that this list is not exhaustive. - Calendar and Addressbook (Radicale) + Calendar and Addressbook (Radicale) - File Synchronization (Syncthing) + File Synchronization (Syncthing) - Web Search (Searx) + Feed reader (TinyTinyRSS) - Wiki (MediaWiki) + Web Search (Searx) - Wiki and Blog (Ikiwiki) + Wiki (MediaWiki) + + + Wiki and Blog (Ikiwiki)
@@ -1182,8 +1210,24 @@ dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of=
- Using Tor SOCKS port (advanced) + (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 @@ -1234,15 +1278,7 @@ dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of=
Using Transmission - After installing Transmission, it can be accessed at https://<your freedombox>/transmission. When you try to access this page, you will be required to login with a username and password. The default for both is "transmission". You can and should change the username and password using the configuration form in Plinth. -
-
- Known Issues - - - The initial password is shown in the Plinth configuration form in a hashed format. This prevents it from being read or copied. However, after the password is changed, it is shown directly, without hashing. - - + 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 @@ -1898,7 +1934,7 @@ echo 'select name from users' | sqlite3 /var/lib/matrix-synapse/homeserver.db ]
File Synchronization (Syncthing) 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. - Note: Syncthing is available in FreedomBox starting with Plinth version 0.14. + 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. @@ -1916,11 +1952,24 @@ echo 'select name from users' | sqlite3 /var/lib/matrix-synapse/homeserver.db ] 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 hidden service. - If you would like to proxy your Syncthing client over Tor, set the all_proxy environment variable: + Syncthing should automatically sync with your FreedomBox even if it is only accessible as a Tor hidden 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. +
+
Gobby Server (infinoted) @@ -5981,7 +6030,17 @@ firewall-cmd --permanent --zone=internal --add-interface=eth0]]> Make the domain name known: - In Configure insert your domain name, e.g. MyWebName.com Let's Encrypt + In Configure insert your domain name, e.g. MyWebName.com + + + + + + + Let's Encrypt + + + @@ -9265,6 +9324,13 @@ $ sudo umount /tmp/vbox-root1 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: + +
@@ -9872,6 +9938,41 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
Release Notes The following are the release notes for each FreedomBox version. +
+ 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) diff --git a/doc/images/Backups_Step1_v49.png b/doc/manual/en/images/Backups_Step1_v49.png similarity index 100% rename from doc/images/Backups_Step1_v49.png rename to doc/manual/en/images/Backups_Step1_v49.png diff --git a/doc/images/Backups_Step2_v49.png b/doc/manual/en/images/Backups_Step2_v49.png similarity index 100% rename from doc/images/Backups_Step2_v49.png rename to doc/manual/en/images/Backups_Step2_v49.png diff --git a/doc/images/Backups_Step3_v49.png b/doc/manual/en/images/Backups_Step3_v49.png similarity index 100% rename from doc/images/Backups_Step3_v49.png rename to doc/manual/en/images/Backups_Step3_v49.png diff --git a/doc/images/Backups_Step4_v49.png b/doc/manual/en/images/Backups_Step4_v49.png similarity index 100% rename from doc/images/Backups_Step4_v49.png rename to doc/manual/en/images/Backups_Step4_v49.png diff --git a/doc/images/Backups_Step5_v49.png b/doc/manual/en/images/Backups_Step5_v49.png similarity index 100% rename from doc/images/Backups_Step5_v49.png rename to doc/manual/en/images/Backups_Step5_v49.png diff --git a/doc/images/Backups_Step6_v49.png b/doc/manual/en/images/Backups_Step6_v49.png similarity index 100% rename from doc/images/Backups_Step6_v49.png rename to doc/manual/en/images/Backups_Step6_v49.png diff --git a/doc/images/Backups_Step7_v49.png b/doc/manual/en/images/Backups_Step7_v49.png similarity index 100% rename from doc/images/Backups_Step7_v49.png rename to doc/manual/en/images/Backups_Step7_v49.png diff --git a/doc/images/DAVdroid-refresh.png b/doc/manual/en/images/DAVdroid-refresh.png similarity index 100% rename from doc/images/DAVdroid-refresh.png rename to doc/manual/en/images/DAVdroid-refresh.png diff --git a/doc/images/DAVdroid-setup-account.png b/doc/manual/en/images/DAVdroid-setup-account.png similarity index 100% rename from doc/images/DAVdroid-setup-account.png rename to doc/manual/en/images/DAVdroid-setup-account.png diff --git a/doc/images/DAVdroid-sync-account.png b/doc/manual/en/images/DAVdroid-sync-account.png similarity index 100% rename from doc/images/DAVdroid-sync-account.png rename to doc/manual/en/images/DAVdroid-sync-account.png diff --git a/doc/images/DateTime.png b/doc/manual/en/images/DateTime.png similarity index 100% rename from doc/images/DateTime.png rename to doc/manual/en/images/DateTime.png diff --git a/doc/images/Disks.png b/doc/manual/en/images/Disks.png similarity index 100% rename from doc/images/Disks.png rename to doc/manual/en/images/Disks.png diff --git a/doc/images/DynamicDNS-Settings.png b/doc/manual/en/images/DynamicDNS-Settings.png similarity index 100% rename from doc/images/DynamicDNS-Settings.png rename to doc/manual/en/images/DynamicDNS-Settings.png diff --git a/doc/images/Firewall.png b/doc/manual/en/images/Firewall.png similarity index 100% rename from doc/images/Firewall.png rename to doc/manual/en/images/Firewall.png diff --git a/doc/images/LetsEncrypt-Certificate.png b/doc/manual/en/images/LetsEncrypt-Certificate.png similarity index 100% rename from doc/images/LetsEncrypt-Certificate.png rename to doc/manual/en/images/LetsEncrypt-Certificate.png diff --git a/doc/images/LetsEncrypt-Configure.png b/doc/manual/en/images/LetsEncrypt-Configure.png similarity index 100% rename from doc/images/LetsEncrypt-Configure.png rename to doc/manual/en/images/LetsEncrypt-Configure.png diff --git a/doc/images/LetsEncrypt-NameServices.png b/doc/manual/en/images/LetsEncrypt-NameServices.png similarity index 100% rename from doc/images/LetsEncrypt-NameServices.png rename to doc/manual/en/images/LetsEncrypt-NameServices.png diff --git a/doc/images/LetsEncrypt.png b/doc/manual/en/images/LetsEncrypt.png similarity index 100% rename from doc/images/LetsEncrypt.png rename to doc/manual/en/images/LetsEncrypt.png diff --git a/doc/images/OPML.png b/doc/manual/en/images/OPML.png similarity index 100% rename from doc/images/OPML.png rename to doc/manual/en/images/OPML.png diff --git a/doc/images/Privoxy-BrowserSettings.png b/doc/manual/en/images/Privoxy-BrowserSettings.png similarity index 100% rename from doc/images/Privoxy-BrowserSettings.png rename to doc/manual/en/images/Privoxy-BrowserSettings.png diff --git a/doc/images/Privoxy-Installation.png b/doc/manual/en/images/Privoxy-Installation.png similarity index 100% rename from doc/images/Privoxy-Installation.png rename to doc/manual/en/images/Privoxy-Installation.png diff --git a/doc/images/Quassel_Installation.png b/doc/manual/en/images/Quassel_Installation.png similarity index 100% rename from doc/images/Quassel_Installation.png rename to doc/manual/en/images/Quassel_Installation.png diff --git a/doc/images/Quassel_PortForwarding.png b/doc/manual/en/images/Quassel_PortForwarding.png similarity index 100% rename from doc/images/Quassel_PortForwarding.png rename to doc/manual/en/images/Quassel_PortForwarding.png diff --git a/doc/images/Quasseldroid.png b/doc/manual/en/images/Quasseldroid.png similarity index 100% rename from doc/images/Quasseldroid.png rename to doc/manual/en/images/Quasseldroid.png diff --git a/doc/images/Radicale-Evolution-Docu.png b/doc/manual/en/images/Radicale-Evolution-Docu.png similarity index 100% rename from doc/images/Radicale-Evolution-Docu.png rename to doc/manual/en/images/Radicale-Evolution-Docu.png diff --git a/doc/images/Radicale-Plinth.png b/doc/manual/en/images/Radicale-Plinth.png similarity index 100% rename from doc/images/Radicale-Plinth.png rename to doc/manual/en/images/Radicale-Plinth.png diff --git a/doc/images/Security.png b/doc/manual/en/images/Security.png similarity index 100% rename from doc/images/Security.png rename to doc/manual/en/images/Security.png diff --git a/doc/images/Select-RSS-feed.png b/doc/manual/en/images/Select-RSS-feed.png similarity index 100% rename from doc/images/Select-RSS-feed.png rename to doc/manual/en/images/Select-RSS-feed.png diff --git a/doc/images/Storage.png b/doc/manual/en/images/Storage.png similarity index 100% rename from doc/images/Storage.png rename to doc/manual/en/images/Storage.png diff --git a/doc/images/Subscribe-dialog.png b/doc/manual/en/images/Subscribe-dialog.png similarity index 100% rename from doc/images/Subscribe-dialog.png rename to doc/manual/en/images/Subscribe-dialog.png diff --git a/doc/images/Subscribe-to-feed.png b/doc/manual/en/images/Subscribe-to-feed.png similarity index 100% rename from doc/images/Subscribe-to-feed.png rename to doc/manual/en/images/Subscribe-to-feed.png diff --git a/doc/images/Syncthing_GUI.png b/doc/manual/en/images/Syncthing_GUI.png similarity index 100% rename from doc/images/Syncthing_GUI.png rename to doc/manual/en/images/Syncthing_GUI.png diff --git a/doc/images/Unsubscribe.png b/doc/manual/en/images/Unsubscribe.png similarity index 100% rename from doc/images/Unsubscribe.png rename to doc/manual/en/images/Unsubscribe.png diff --git a/doc/images/WikiNews-feed.png b/doc/manual/en/images/WikiNews-feed.png similarity index 100% rename from doc/images/WikiNews-feed.png rename to doc/manual/en/images/WikiNews-feed.png diff --git a/doc/images/a20-olinuxino-lime2.jpg b/doc/manual/en/images/a20-olinuxino-lime2.jpg similarity index 100% rename from doc/images/a20-olinuxino-lime2.jpg rename to doc/manual/en/images/a20-olinuxino-lime2.jpg diff --git a/doc/images/a20-olinuxino-lime2_thumb.jpg b/doc/manual/en/images/a20-olinuxino-lime2_thumb.jpg similarity index 100% rename from doc/images/a20-olinuxino-lime2_thumb.jpg rename to doc/manual/en/images/a20-olinuxino-lime2_thumb.jpg diff --git a/doc/images/a20-olinuxino-micro.jpg b/doc/manual/en/images/a20-olinuxino-micro.jpg similarity index 100% rename from doc/images/a20-olinuxino-micro.jpg rename to doc/manual/en/images/a20-olinuxino-micro.jpg diff --git a/doc/images/a20-olinuxino-micro_thumb.jpg b/doc/manual/en/images/a20-olinuxino-micro_thumb.jpg similarity index 100% rename from doc/images/a20-olinuxino-micro_thumb.jpg rename to doc/manual/en/images/a20-olinuxino-micro_thumb.jpg diff --git a/doc/images/about.png b/doc/manual/en/images/about.png similarity index 100% rename from doc/images/about.png rename to doc/manual/en/images/about.png diff --git a/doc/images/add_security_exception.png b/doc/manual/en/images/add_security_exception.png similarity index 100% rename from doc/images/add_security_exception.png rename to doc/manual/en/images/add_security_exception.png diff --git a/doc/images/apps.png b/doc/manual/en/images/apps.png similarity index 100% rename from doc/images/apps.png rename to doc/manual/en/images/apps.png diff --git a/doc/images/apu1d.jpg b/doc/manual/en/images/apu1d.jpg similarity index 100% rename from doc/images/apu1d.jpg rename to doc/manual/en/images/apu1d.jpg diff --git a/doc/images/apu1d_thumb.jpg b/doc/manual/en/images/apu1d_thumb.jpg similarity index 100% rename from doc/images/apu1d_thumb.jpg rename to doc/manual/en/images/apu1d_thumb.jpg diff --git a/doc/images/banana-pro_thumb.jpg b/doc/manual/en/images/banana-pro_thumb.jpg similarity index 100% rename from doc/images/banana-pro_thumb.jpg rename to doc/manual/en/images/banana-pro_thumb.jpg diff --git a/doc/images/beagleboard.jpg b/doc/manual/en/images/beagleboard.jpg similarity index 100% rename from doc/images/beagleboard.jpg rename to doc/manual/en/images/beagleboard.jpg diff --git a/doc/images/beagleboard_thumb.jpg b/doc/manual/en/images/beagleboard_thumb.jpg similarity index 100% rename from doc/images/beagleboard_thumb.jpg rename to doc/manual/en/images/beagleboard_thumb.jpg diff --git a/doc/images/checkmark.png b/doc/manual/en/images/checkmark.png similarity index 100% rename from doc/images/checkmark.png rename to doc/manual/en/images/checkmark.png diff --git a/doc/images/cockpit-admin-user.png b/doc/manual/en/images/cockpit-admin-user.png similarity index 100% rename from doc/images/cockpit-admin-user.png rename to doc/manual/en/images/cockpit-admin-user.png diff --git a/doc/images/cockpit-enable.png b/doc/manual/en/images/cockpit-enable.png similarity index 100% rename from doc/images/cockpit-enable.png rename to doc/manual/en/images/cockpit-enable.png diff --git a/doc/images/cockpit-login.png b/doc/manual/en/images/cockpit-login.png similarity index 100% rename from doc/images/cockpit-login.png rename to doc/manual/en/images/cockpit-login.png diff --git a/doc/images/cockpit-logs.png b/doc/manual/en/images/cockpit-logs.png similarity index 100% rename from doc/images/cockpit-logs.png rename to doc/manual/en/images/cockpit-logs.png diff --git a/doc/images/cockpit-mobile.png b/doc/manual/en/images/cockpit-mobile.png similarity index 100% rename from doc/images/cockpit-mobile.png rename to doc/manual/en/images/cockpit-mobile.png diff --git a/doc/images/cockpit-network1.png b/doc/manual/en/images/cockpit-network1.png similarity index 100% rename from doc/images/cockpit-network1.png rename to doc/manual/en/images/cockpit-network1.png diff --git a/doc/images/cockpit-network2.png b/doc/manual/en/images/cockpit-network2.png similarity index 100% rename from doc/images/cockpit-network2.png rename to doc/manual/en/images/cockpit-network2.png diff --git a/doc/images/cockpit-network3.png b/doc/manual/en/images/cockpit-network3.png similarity index 100% rename from doc/images/cockpit-network3.png rename to doc/manual/en/images/cockpit-network3.png diff --git a/doc/images/cockpit-services1.png b/doc/manual/en/images/cockpit-services1.png similarity index 100% rename from doc/images/cockpit-services1.png rename to doc/manual/en/images/cockpit-services1.png diff --git a/doc/images/cockpit-services2.png b/doc/manual/en/images/cockpit-services2.png similarity index 100% rename from doc/images/cockpit-services2.png rename to doc/manual/en/images/cockpit-services2.png diff --git a/doc/images/cockpit-storage1.png b/doc/manual/en/images/cockpit-storage1.png similarity index 100% rename from doc/images/cockpit-storage1.png rename to doc/manual/en/images/cockpit-storage1.png diff --git a/doc/images/cockpit-storage2.png b/doc/manual/en/images/cockpit-storage2.png similarity index 100% rename from doc/images/cockpit-storage2.png rename to doc/manual/en/images/cockpit-storage2.png diff --git a/doc/images/cockpit-system.png b/doc/manual/en/images/cockpit-system.png similarity index 100% rename from doc/images/cockpit-system.png rename to doc/manual/en/images/cockpit-system.png diff --git a/doc/images/cockpit-terminal.png b/doc/manual/en/images/cockpit-terminal.png similarity index 100% rename from doc/images/cockpit-terminal.png rename to doc/manual/en/images/cockpit-terminal.png diff --git a/doc/images/cubieboard2_thumb.jpg b/doc/manual/en/images/cubieboard2_thumb.jpg similarity index 100% rename from doc/images/cubieboard2_thumb.jpg rename to doc/manual/en/images/cubieboard2_thumb.jpg diff --git a/doc/images/danube_thumb.png b/doc/manual/en/images/danube_thumb.png similarity index 100% rename from doc/images/danube_thumb.png rename to doc/manual/en/images/danube_thumb.png diff --git a/doc/images/debian_thumb.png b/doc/manual/en/images/debian_thumb.png similarity index 100% rename from doc/images/debian_thumb.png rename to doc/manual/en/images/debian_thumb.png diff --git a/doc/images/deluge.png b/doc/manual/en/images/deluge.png similarity index 100% rename from doc/images/deluge.png rename to doc/manual/en/images/deluge.png diff --git a/doc/images/deluge_connection_manager.png b/doc/manual/en/images/deluge_connection_manager.png similarity index 100% rename from doc/images/deluge_connection_manager.png rename to doc/manual/en/images/deluge_connection_manager.png diff --git a/doc/images/deluge_connection_manager_2.png b/doc/manual/en/images/deluge_connection_manager_2.png similarity index 100% rename from doc/images/deluge_connection_manager_2.png rename to doc/manual/en/images/deluge_connection_manager_2.png diff --git a/doc/images/deluge_login.png b/doc/manual/en/images/deluge_login.png similarity index 100% rename from doc/images/deluge_login.png rename to doc/manual/en/images/deluge_login.png diff --git a/doc/images/dreamplug.jpg b/doc/manual/en/images/dreamplug.jpg similarity index 100% rename from doc/images/dreamplug.jpg rename to doc/manual/en/images/dreamplug.jpg diff --git a/doc/images/dreamplug_thumb.jpg b/doc/manual/en/images/dreamplug_thumb.jpg similarity index 100% rename from doc/images/dreamplug_thumb.jpg rename to doc/manual/en/images/dreamplug_thumb.jpg diff --git a/doc/images/emailclient.png b/doc/manual/en/images/emailclient.png similarity index 100% rename from doc/images/emailclient.png rename to doc/manual/en/images/emailclient.png diff --git a/doc/images/freedombox-danube.jpg b/doc/manual/en/images/freedombox-danube.jpg similarity index 100% rename from doc/images/freedombox-danube.jpg rename to doc/manual/en/images/freedombox-danube.jpg diff --git a/doc/images/freedombox-frontpage-2018-02-26.png b/doc/manual/en/images/freedombox-frontpage-2018-02-26.png similarity index 100% rename from doc/images/freedombox-frontpage-2018-02-26.png rename to doc/manual/en/images/freedombox-frontpage-2018-02-26.png diff --git a/doc/images/freedombox-frontpage-2018-06-19.png b/doc/manual/en/images/freedombox-frontpage-2018-06-19.png similarity index 100% rename from doc/images/freedombox-frontpage-2018-06-19.png rename to doc/manual/en/images/freedombox-frontpage-2018-06-19.png diff --git a/doc/images/freedombox-frontpage-2019-03-02.png b/doc/manual/en/images/freedombox-frontpage-2019-03-02.png similarity index 100% rename from doc/images/freedombox-frontpage-2019-03-02.png rename to doc/manual/en/images/freedombox-frontpage-2019-03-02.png diff --git a/doc/images/freedombox-screenshot-about.png b/doc/manual/en/images/freedombox-screenshot-about.png similarity index 100% rename from doc/images/freedombox-screenshot-about.png rename to doc/manual/en/images/freedombox-screenshot-about.png diff --git a/doc/images/freedombox-screenshot-apps.png b/doc/manual/en/images/freedombox-screenshot-apps.png similarity index 100% rename from doc/images/freedombox-screenshot-apps.png rename to doc/manual/en/images/freedombox-screenshot-apps.png diff --git a/doc/images/freedombox-screenshot-home.png b/doc/manual/en/images/freedombox-screenshot-home.png similarity index 100% rename from doc/images/freedombox-screenshot-home.png rename to doc/manual/en/images/freedombox-screenshot-home.png diff --git a/doc/images/freedombox-screenshot-manual.png b/doc/manual/en/images/freedombox-screenshot-manual.png similarity index 100% rename from doc/images/freedombox-screenshot-manual.png rename to doc/manual/en/images/freedombox-screenshot-manual.png diff --git a/doc/images/freedombox-screenshot-roundcube.png b/doc/manual/en/images/freedombox-screenshot-roundcube.png similarity index 100% rename from doc/images/freedombox-screenshot-roundcube.png rename to doc/manual/en/images/freedombox-screenshot-roundcube.png diff --git a/doc/images/freedombox-screenshot-system.png b/doc/manual/en/images/freedombox-screenshot-system.png similarity index 100% rename from doc/images/freedombox-screenshot-system.png rename to doc/manual/en/images/freedombox-screenshot-system.png diff --git a/doc/images/freedombox-screenshot-tor.png b/doc/manual/en/images/freedombox-screenshot-tor.png similarity index 100% rename from doc/images/freedombox-screenshot-tor.png rename to doc/manual/en/images/freedombox-screenshot-tor.png diff --git a/doc/images/freedombox-screenshot-ttrss.png b/doc/manual/en/images/freedombox-screenshot-ttrss.png similarity index 100% rename from doc/images/freedombox-screenshot-ttrss.png rename to doc/manual/en/images/freedombox-screenshot-ttrss.png diff --git a/doc/images/frontpage.png b/doc/manual/en/images/frontpage.png similarity index 100% rename from doc/images/frontpage.png rename to doc/manual/en/images/frontpage.png diff --git a/doc/images/help.png b/doc/manual/en/images/help.png similarity index 100% rename from doc/images/help.png rename to doc/manual/en/images/help.png diff --git a/doc/images/icon-error.png b/doc/manual/en/images/icon-error.png similarity index 100% rename from doc/images/icon-error.png rename to doc/manual/en/images/icon-error.png diff --git a/doc/images/ikiwiki_create.png b/doc/manual/en/images/ikiwiki_create.png similarity index 100% rename from doc/images/ikiwiki_create.png rename to doc/manual/en/images/ikiwiki_create.png diff --git a/doc/images/ikiwiki_manage.png b/doc/manual/en/images/ikiwiki_manage.png similarity index 100% rename from doc/images/ikiwiki_manage.png rename to doc/manual/en/images/ikiwiki_manage.png diff --git a/doc/images/mldonkey.jpg b/doc/manual/en/images/mldonkey.jpg similarity index 100% rename from doc/images/mldonkey.jpg rename to doc/manual/en/images/mldonkey.jpg diff --git a/doc/images/network_single.png b/doc/manual/en/images/network_single.png similarity index 100% rename from doc/images/network_single.png rename to doc/manual/en/images/network_single.png diff --git a/doc/images/newsfeed.png b/doc/manual/en/images/newsfeed.png similarity index 100% rename from doc/images/newsfeed.png rename to doc/manual/en/images/newsfeed.png diff --git a/doc/images/openvpn_connect.png b/doc/manual/en/images/openvpn_connect.png similarity index 100% rename from doc/images/openvpn_connect.png rename to doc/manual/en/images/openvpn_connect.png diff --git a/doc/images/openvpn_connected.png b/doc/manual/en/images/openvpn_connected.png similarity index 100% rename from doc/images/openvpn_connected.png rename to doc/manual/en/images/openvpn_connected.png diff --git a/doc/images/openvpn_disconnect.png b/doc/manual/en/images/openvpn_disconnect.png similarity index 100% rename from doc/images/openvpn_disconnect.png rename to doc/manual/en/images/openvpn_disconnect.png diff --git a/doc/images/openvpn_download_profile.png b/doc/manual/en/images/openvpn_download_profile.png similarity index 100% rename from doc/images/openvpn_download_profile.png rename to doc/manual/en/images/openvpn_download_profile.png diff --git a/doc/images/openvpn_edit_domain_name.png b/doc/manual/en/images/openvpn_edit_domain_name.png similarity index 100% rename from doc/images/openvpn_edit_domain_name.png rename to doc/manual/en/images/openvpn_edit_domain_name.png diff --git a/doc/images/openvpn_import_profile.png b/doc/manual/en/images/openvpn_import_profile.png similarity index 100% rename from doc/images/openvpn_import_profile.png rename to doc/manual/en/images/openvpn_import_profile.png diff --git a/doc/images/openvpn_install_app.png b/doc/manual/en/images/openvpn_install_app.png similarity index 100% rename from doc/images/openvpn_install_app.png rename to doc/manual/en/images/openvpn_install_app.png diff --git a/doc/images/openvpn_profile_created.png b/doc/manual/en/images/openvpn_profile_created.png similarity index 100% rename from doc/images/openvpn_profile_created.png rename to doc/manual/en/images/openvpn_profile_created.png diff --git a/doc/images/pcduino3s.jpg b/doc/manual/en/images/pcduino3s.jpg similarity index 100% rename from doc/images/pcduino3s.jpg rename to doc/manual/en/images/pcduino3s.jpg diff --git a/doc/images/pcduino3s_thumb.jpg b/doc/manual/en/images/pcduino3s_thumb.jpg similarity index 100% rename from doc/images/pcduino3s_thumb.jpg rename to doc/manual/en/images/pcduino3s_thumb.jpg diff --git a/doc/images/pine64-plus.jpg b/doc/manual/en/images/pine64-plus.jpg similarity index 100% rename from doc/images/pine64-plus.jpg rename to doc/manual/en/images/pine64-plus.jpg diff --git a/doc/images/pine64-plus_thumb.jpg b/doc/manual/en/images/pine64-plus_thumb.jpg similarity index 100% rename from doc/images/pine64-plus_thumb.jpg rename to doc/manual/en/images/pine64-plus_thumb.jpg diff --git a/doc/images/pioneer-edition.jpg b/doc/manual/en/images/pioneer-edition.jpg similarity index 100% rename from doc/images/pioneer-edition.jpg rename to doc/manual/en/images/pioneer-edition.jpg diff --git a/doc/images/pioneer-edition_thumb.jpg b/doc/manual/en/images/pioneer-edition_thumb.jpg similarity index 100% rename from doc/images/pioneer-edition_thumb.jpg rename to doc/manual/en/images/pioneer-edition_thumb.jpg diff --git a/doc/images/plinth_all_apps_full_page.png b/doc/manual/en/images/plinth_all_apps_full_page.png similarity index 100% rename from doc/images/plinth_all_apps_full_page.png rename to doc/manual/en/images/plinth_all_apps_full_page.png diff --git a/doc/images/plinth_first_boot.png b/doc/manual/en/images/plinth_first_boot.png similarity index 100% rename from doc/images/plinth_first_boot.png rename to doc/manual/en/images/plinth_first_boot.png diff --git a/doc/images/plinth_firstboot_account.png b/doc/manual/en/images/plinth_firstboot_account.png similarity index 100% rename from doc/images/plinth_firstboot_account.png rename to doc/manual/en/images/plinth_firstboot_account.png diff --git a/doc/images/plinth_firstboot_complete.png b/doc/manual/en/images/plinth_firstboot_complete.png similarity index 100% rename from doc/images/plinth_firstboot_complete.png rename to doc/manual/en/images/plinth_firstboot_complete.png diff --git a/doc/images/plinth_firstboot_welcome.png b/doc/manual/en/images/plinth_firstboot_welcome.png similarity index 100% rename from doc/images/plinth_firstboot_welcome.png rename to doc/manual/en/images/plinth_firstboot_welcome.png diff --git a/doc/images/plinth_frontpage.png b/doc/manual/en/images/plinth_frontpage.png similarity index 100% rename from doc/images/plinth_frontpage.png rename to doc/manual/en/images/plinth_frontpage.png diff --git a/doc/images/plinth_insecure_connection.png b/doc/manual/en/images/plinth_insecure_connection.png similarity index 100% rename from doc/images/plinth_insecure_connection.png rename to doc/manual/en/images/plinth_insecure_connection.png diff --git a/doc/images/plinth_openvpn.png b/doc/manual/en/images/plinth_openvpn.png similarity index 100% rename from doc/images/plinth_openvpn.png rename to doc/manual/en/images/plinth_openvpn.png diff --git a/doc/images/quassel-client-1-connect-to-core.png b/doc/manual/en/images/quassel-client-1-connect-to-core.png similarity index 100% rename from doc/images/quassel-client-1-connect-to-core.png rename to doc/manual/en/images/quassel-client-1-connect-to-core.png diff --git a/doc/images/quassel-client-10-setup-identity.png b/doc/manual/en/images/quassel-client-10-setup-identity.png similarity index 100% rename from doc/images/quassel-client-10-setup-identity.png rename to doc/manual/en/images/quassel-client-10-setup-identity.png diff --git a/doc/images/quassel-client-11-setup-network-connection.png b/doc/manual/en/images/quassel-client-11-setup-network-connection.png similarity index 100% rename from doc/images/quassel-client-11-setup-network-connection.png rename to doc/manual/en/images/quassel-client-11-setup-network-connection.png diff --git a/doc/images/quassel-client-12-server-info.png b/doc/manual/en/images/quassel-client-12-server-info.png similarity index 100% rename from doc/images/quassel-client-12-server-info.png rename to doc/manual/en/images/quassel-client-12-server-info.png diff --git a/doc/images/quassel-client-13-server-info-ssl.png b/doc/manual/en/images/quassel-client-13-server-info-ssl.png similarity index 100% rename from doc/images/quassel-client-13-server-info-ssl.png rename to doc/manual/en/images/quassel-client-13-server-info-ssl.png diff --git a/doc/images/quassel-client-14-setup-network-connection.png b/doc/manual/en/images/quassel-client-14-setup-network-connection.png similarity index 100% rename from doc/images/quassel-client-14-setup-network-connection.png rename to doc/manual/en/images/quassel-client-14-setup-network-connection.png diff --git a/doc/images/quassel-client-15-quassel-main.png b/doc/manual/en/images/quassel-client-15-quassel-main.png similarity index 100% rename from doc/images/quassel-client-15-quassel-main.png rename to doc/manual/en/images/quassel-client-15-quassel-main.png diff --git a/doc/images/quassel-client-2-add-core-account.png b/doc/manual/en/images/quassel-client-2-add-core-account.png similarity index 100% rename from doc/images/quassel-client-2-add-core-account.png rename to doc/manual/en/images/quassel-client-2-add-core-account.png diff --git a/doc/images/quassel-client-3-connect-to-core.png b/doc/manual/en/images/quassel-client-3-connect-to-core.png similarity index 100% rename from doc/images/quassel-client-3-connect-to-core.png rename to doc/manual/en/images/quassel-client-3-connect-to-core.png diff --git a/doc/images/quassel-client-4-untrusted-security-certficate.png b/doc/manual/en/images/quassel-client-4-untrusted-security-certficate.png similarity index 100% rename from doc/images/quassel-client-4-untrusted-security-certficate.png rename to doc/manual/en/images/quassel-client-4-untrusted-security-certficate.png diff --git a/doc/images/quassel-client-5-untrusted-security-certificate.png b/doc/manual/en/images/quassel-client-5-untrusted-security-certificate.png similarity index 100% rename from doc/images/quassel-client-5-untrusted-security-certificate.png rename to doc/manual/en/images/quassel-client-5-untrusted-security-certificate.png diff --git a/doc/images/quassel-client-6-core-configuration-wizard.png b/doc/manual/en/images/quassel-client-6-core-configuration-wizard.png similarity index 100% rename from doc/images/quassel-client-6-core-configuration-wizard.png rename to doc/manual/en/images/quassel-client-6-core-configuration-wizard.png diff --git a/doc/images/quassel-client-7-create-admin-user.png b/doc/manual/en/images/quassel-client-7-create-admin-user.png similarity index 100% rename from doc/images/quassel-client-7-create-admin-user.png rename to doc/manual/en/images/quassel-client-7-create-admin-user.png diff --git a/doc/images/quassel-client-8-select-storage-backend.png b/doc/manual/en/images/quassel-client-8-select-storage-backend.png similarity index 100% rename from doc/images/quassel-client-8-select-storage-backend.png rename to doc/manual/en/images/quassel-client-8-select-storage-backend.png diff --git a/doc/images/quassel-client-9-welcome-wizard.png b/doc/manual/en/images/quassel-client-9-welcome-wizard.png similarity index 100% rename from doc/images/quassel-client-9-welcome-wizard.png rename to doc/manual/en/images/quassel-client-9-welcome-wizard.png diff --git a/doc/images/radicale_web.png b/doc/manual/en/images/radicale_web.png similarity index 100% rename from doc/images/radicale_web.png rename to doc/manual/en/images/radicale_web.png diff --git a/doc/images/raspberry2_thumb.jpg b/doc/manual/en/images/raspberry2_thumb.jpg similarity index 100% rename from doc/images/raspberry2_thumb.jpg rename to doc/manual/en/images/raspberry2_thumb.jpg diff --git a/doc/images/raspberry_thumb.jpg b/doc/manual/en/images/raspberry_thumb.jpg similarity index 100% rename from doc/images/raspberry_thumb.jpg rename to doc/manual/en/images/raspberry_thumb.jpg diff --git a/doc/images/raspberrypi.jpg b/doc/manual/en/images/raspberrypi.jpg similarity index 100% rename from doc/images/raspberrypi.jpg rename to doc/manual/en/images/raspberrypi.jpg diff --git a/doc/images/raspberrypi2.jpg b/doc/manual/en/images/raspberrypi2.jpg similarity index 100% rename from doc/images/raspberrypi2.jpg rename to doc/manual/en/images/raspberrypi2.jpg diff --git a/doc/images/raspberrypi3.jpg b/doc/manual/en/images/raspberrypi3.jpg similarity index 100% rename from doc/images/raspberrypi3.jpg rename to doc/manual/en/images/raspberrypi3.jpg diff --git a/doc/images/raspberrypi3b_thumb.jpg b/doc/manual/en/images/raspberrypi3b_thumb.jpg similarity index 100% rename from doc/images/raspberrypi3b_thumb.jpg rename to doc/manual/en/images/raspberrypi3b_thumb.jpg diff --git a/doc/images/raspberrypi3bplus.jpg b/doc/manual/en/images/raspberrypi3bplus.jpg similarity index 100% rename from doc/images/raspberrypi3bplus.jpg rename to doc/manual/en/images/raspberrypi3bplus.jpg diff --git a/doc/images/raspberrypi3bplus_thumb.jpg b/doc/manual/en/images/raspberrypi3bplus_thumb.jpg similarity index 100% rename from doc/images/raspberrypi3bplus_thumb.jpg rename to doc/manual/en/images/raspberrypi3bplus_thumb.jpg diff --git a/doc/images/repro_domains.png b/doc/manual/en/images/repro_domains.png similarity index 100% rename from doc/images/repro_domains.png rename to doc/manual/en/images/repro_domains.png diff --git a/doc/images/repro_users.png b/doc/manual/en/images/repro_users.png similarity index 100% rename from doc/images/repro_users.png rename to doc/manual/en/images/repro_users.png diff --git a/doc/images/roundcube-gmail.png b/doc/manual/en/images/roundcube-gmail.png similarity index 100% rename from doc/images/roundcube-gmail.png rename to doc/manual/en/images/roundcube-gmail.png diff --git a/doc/images/roundcube-riseup.png b/doc/manual/en/images/roundcube-riseup.png similarity index 100% rename from doc/images/roundcube-riseup.png rename to doc/manual/en/images/roundcube-riseup.png diff --git a/doc/images/searx-screenshot.png b/doc/manual/en/images/searx-screenshot.png similarity index 100% rename from doc/images/searx-screenshot.png rename to doc/manual/en/images/searx-screenshot.png diff --git a/doc/images/smile.png b/doc/manual/en/images/smile.png similarity index 100% rename from doc/images/smile.png rename to doc/manual/en/images/smile.png diff --git a/doc/images/snapshots.png b/doc/manual/en/images/snapshots.png similarity index 100% rename from doc/images/snapshots.png rename to doc/manual/en/images/snapshots.png diff --git a/doc/images/star_off.png b/doc/manual/en/images/star_off.png similarity index 100% rename from doc/images/star_off.png rename to doc/manual/en/images/star_off.png diff --git a/doc/images/star_on.png b/doc/manual/en/images/star_on.png similarity index 100% rename from doc/images/star_on.png rename to doc/manual/en/images/star_on.png diff --git a/doc/images/system.png b/doc/manual/en/images/system.png similarity index 100% rename from doc/images/system.png rename to doc/manual/en/images/system.png diff --git a/doc/images/tor-bridge-configuration.png b/doc/manual/en/images/tor-bridge-configuration.png similarity index 100% rename from doc/images/tor-bridge-configuration.png rename to doc/manual/en/images/tor-bridge-configuration.png diff --git a/doc/images/tor-bridge-db.png b/doc/manual/en/images/tor-bridge-db.png similarity index 100% rename from doc/images/tor-bridge-db.png rename to doc/manual/en/images/tor-bridge-db.png diff --git a/doc/manual/en/images/tor-socks-firefox.png b/doc/manual/en/images/tor-socks-firefox.png new file mode 100644 index 000000000..0f9e43d30 Binary files /dev/null and b/doc/manual/en/images/tor-socks-firefox.png differ diff --git a/doc/images/tor.png b/doc/manual/en/images/tor.png similarity index 100% rename from doc/images/tor.png rename to doc/manual/en/images/tor.png diff --git a/doc/images/tor_browser_plinth.png b/doc/manual/en/images/tor_browser_plinth.png similarity index 100% rename from doc/images/tor_browser_plinth.png rename to doc/manual/en/images/tor_browser_plinth.png diff --git a/doc/images/transmission.png b/doc/manual/en/images/transmission.png similarity index 100% rename from doc/images/transmission.png rename to doc/manual/en/images/transmission.png diff --git a/doc/images/ttrss.png b/doc/manual/en/images/ttrss.png similarity index 100% rename from doc/images/ttrss.png rename to doc/manual/en/images/ttrss.png diff --git a/doc/images/ttrssapp1.png b/doc/manual/en/images/ttrssapp1.png similarity index 100% rename from doc/images/ttrssapp1.png rename to doc/manual/en/images/ttrssapp1.png diff --git a/doc/images/ttrssapp2.png b/doc/manual/en/images/ttrssapp2.png similarity index 100% rename from doc/images/ttrssapp2.png rename to doc/manual/en/images/ttrssapp2.png diff --git a/doc/images/ttrssapp3.png b/doc/manual/en/images/ttrssapp3.png similarity index 100% rename from doc/images/ttrssapp3.png rename to doc/manual/en/images/ttrssapp3.png diff --git a/doc/images/ttrssapp4.png b/doc/manual/en/images/ttrssapp4.png similarity index 100% rename from doc/images/ttrssapp4.png rename to doc/manual/en/images/ttrssapp4.png diff --git a/doc/images/ttrssapp5.png b/doc/manual/en/images/ttrssapp5.png similarity index 100% rename from doc/images/ttrssapp5.png rename to doc/manual/en/images/ttrssapp5.png diff --git a/doc/images/ui_add_security_exception.png b/doc/manual/en/images/ui_add_security_exception.png similarity index 100% rename from doc/images/ui_add_security_exception.png rename to doc/manual/en/images/ui_add_security_exception.png diff --git a/doc/images/ui_apps.png b/doc/manual/en/images/ui_apps.png similarity index 100% rename from doc/images/ui_apps.png rename to doc/manual/en/images/ui_apps.png diff --git a/doc/manual/en/images/ui_burger_icon.png b/doc/manual/en/images/ui_burger_icon.png new file mode 100644 index 000000000..dd55f3bc2 Binary files /dev/null and b/doc/manual/en/images/ui_burger_icon.png differ diff --git a/doc/manual/en/images/ui_burger_menu.png b/doc/manual/en/images/ui_burger_menu.png new file mode 100644 index 000000000..7f40b8263 Binary files /dev/null and b/doc/manual/en/images/ui_burger_menu.png differ diff --git a/doc/images/ui_firstboot_account.png b/doc/manual/en/images/ui_firstboot_account.png similarity index 100% rename from doc/images/ui_firstboot_account.png rename to doc/manual/en/images/ui_firstboot_account.png diff --git a/doc/images/ui_firstboot_complete.png b/doc/manual/en/images/ui_firstboot_complete.png similarity index 100% rename from doc/images/ui_firstboot_complete.png rename to doc/manual/en/images/ui_firstboot_complete.png diff --git a/doc/images/ui_firstboot_welcome.png b/doc/manual/en/images/ui_firstboot_welcome.png similarity index 100% rename from doc/images/ui_firstboot_welcome.png rename to doc/manual/en/images/ui_firstboot_welcome.png diff --git a/doc/images/ui_frontpage.png b/doc/manual/en/images/ui_frontpage.png similarity index 100% rename from doc/images/ui_frontpage.png rename to doc/manual/en/images/ui_frontpage.png diff --git a/doc/images/ui_frontpage_with_app.png b/doc/manual/en/images/ui_frontpage_with_app.png similarity index 100% rename from doc/images/ui_frontpage_with_app.png rename to doc/manual/en/images/ui_frontpage_with_app.png diff --git a/doc/images/ui_help.png b/doc/manual/en/images/ui_help.png similarity index 100% rename from doc/images/ui_help.png rename to doc/manual/en/images/ui_help.png diff --git a/doc/images/ui_insecure_connection.png b/doc/manual/en/images/ui_insecure_connection.png similarity index 100% rename from doc/images/ui_insecure_connection.png rename to doc/manual/en/images/ui_insecure_connection.png diff --git a/doc/images/ui_system.png b/doc/manual/en/images/ui_system.png similarity index 100% rename from doc/images/ui_system.png rename to doc/manual/en/images/ui_system.png diff --git a/doc/images/ui_user_menu.png b/doc/manual/en/images/ui_user_menu.png similarity index 100% rename from doc/images/ui_user_menu.png rename to doc/manual/en/images/ui_user_menu.png diff --git a/doc/images/upgrades.png b/doc/manual/en/images/upgrades.png similarity index 100% rename from doc/images/upgrades.png rename to doc/manual/en/images/upgrades.png diff --git a/doc/images/user.png b/doc/manual/en/images/user.png similarity index 100% rename from doc/images/user.png rename to doc/manual/en/images/user.png diff --git a/doc/images/virtualbox.png b/doc/manual/en/images/virtualbox.png similarity index 100% rename from doc/images/virtualbox.png rename to doc/manual/en/images/virtualbox.png diff --git a/doc/images/virtualbox_console_after_boot.png b/doc/manual/en/images/virtualbox_console_after_boot.png similarity index 100% rename from doc/images/virtualbox_console_after_boot.png rename to doc/manual/en/images/virtualbox_console_after_boot.png diff --git a/doc/images/virtualbox_harddisk_file.png b/doc/manual/en/images/virtualbox_harddisk_file.png similarity index 100% rename from doc/images/virtualbox_harddisk_file.png rename to doc/manual/en/images/virtualbox_harddisk_file.png diff --git a/doc/images/virtualbox_network_type.png b/doc/manual/en/images/virtualbox_network_type.png similarity index 100% rename from doc/images/virtualbox_network_type.png rename to doc/manual/en/images/virtualbox_network_type.png diff --git a/doc/images/virtualbox_os_type.png b/doc/manual/en/images/virtualbox_os_type.png similarity index 100% rename from doc/images/virtualbox_os_type.png rename to doc/manual/en/images/virtualbox_os_type.png diff --git a/doc/images/virtualbox_thumb.png b/doc/manual/en/images/virtualbox_thumb.png similarity index 100% rename from doc/images/virtualbox_thumb.png rename to doc/manual/en/images/virtualbox_thumb.png diff --git a/doc/manual/es/Apache_userdir.raw.xml b/doc/manual/es/Apache_userdir.raw.xml new file mode 100644 index 000000000..d79152c5f --- /dev/null +++ b/doc/manual/es/Apache_userdir.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Apache_userdir42019-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) (userdir)
¿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 Plinth
Usar User websitesEl módulo está siempre activado y no ofrece configuración desde el interfaz web de Plinth. Actualmente ni siquiera muestra que exista. 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 documentos que haya en este directorio cuando se reciban peticiones con la URI ~<un_usuario_de_plinth>. 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Backups.raw.xml new file mode 100644 index 000000000..da4ad8d64 --- /dev/null +++ b/doc/manual/es/Backups.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Backups12019-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.
Funcionalidad de Estatdos de los 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 ocultos 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 Backups: Paso 1 Paso 2 Backups: Paso 2 Paso 3 Backups: Paso 3 Paso 4 Backups: Paso 4 Paso 5 Backups: Paso 5 Paso 6 Backups: Paso 6 Paso 7 Backups: Paso 7 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Cockpit.raw.xml new file mode 100644 index 000000000..c89efd5d1 --- /dev/null +++ b/doc/manual/es/Cockpit.raw.xml @@ -0,0 +1,7 @@ + + +
es/FreedomBox/Manual/Cockpit52019-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.
Administración de Servidor (Cockpit)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 Oculto Tor. 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Configure.raw.xml new file mode 100644 index 000000000..24b2104f5 --- /dev/null +++ b/doc/manual/es/Configure.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Configure22019-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 (Plinth) 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 (Plinth) tecleando en el navegador . /freedombox también se puede usar como alias para /plinth Consejo: Guarda la URL del servicio FreedomBox (Plinth) 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/Coquelicot.raw.xml b/doc/manual/es/Coquelicot.raw.xml new file mode 100644 index 000000000..80c23e729 --- /dev/null +++ b/doc/manual/es/Coquelicot.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Coquelicot22019-09-11 10:34:42fioddorCorrecciones menores.12019-09-11 10:27:55fioddorSe crea la versión española.
Compartición de Archivos (Coquelicot)
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 Plinth. 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. 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/DateTime.raw.xml b/doc/manual/es/DateTime.raw.xml new file mode 100644 index 000000000..7d02aa739 --- /dev/null +++ b/doc/manual/es/DateTime.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/DateTime12019-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.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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/Deluge.raw.xml b/doc/manual/es/Deluge.raw.xml new file mode 100644 index 000000000..1ce4e00af --- /dev/null +++ b/doc/manual/es/Deluge.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Deluge22019-09-04 09:35:32fioddorCorrección menor12019-09-04 09:33:21fioddorSe crea la versión española.
BitTorrent (Deluge)
¿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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/Diagnostics.raw.xml b/doc/manual/es/Diagnostics.raw.xml new file mode 100644 index 000000000..40c5c2813 --- /dev/null +++ b/doc/manual/es/Diagnostics.raw.xml @@ -0,0 +1,5 @@ + + +
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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/DynamicDNS.raw.xml b/doc/manual/es/DynamicDNS.raw.xml new file mode 100644 index 000000000..e842de929 --- /dev/null +++ b/doc/manual/es/DynamicDNS.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/DynamicDNS52019-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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Firewall.raw.xml new file mode 100644 index 000000000..fda486d50 --- /dev/null +++ b/doc/manual/es/Firewall.raw.xml @@ -0,0 +1,17 @@ + + +
es/FreedomBox/Manual/Firewall72019-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 Plinth 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. 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 Networks.
Puertos/ServiciosLa siguiente tabla trata de documentar los puertos, servicios y sus estados por defecto en FreedomBox. Si encuentras esta página desactualizada mira lib/freedombox/first-run.d/90_firewall en el código fuente de Plinth y la página de estado del cortafuegos en Plinth. ServicioPuerto ExternoHabilitado por defectoEstado mostrado en PlinthAdministrado por Plinth Minetest 30000/udp {*} {X} (./) (./) XMPP Client 5222/tcp {*} {X} (./) (./) XMPP Server 5269/tcp {*} {X} (./) (./) XMPP Bosh 5280/tcp {*} {X} (./) (./) NTP 123/udp {o} (./) (./) (./) 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}
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 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: 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/I2P.raw.xml b/doc/manual/es/I2P.raw.xml new file mode 100644 index 000000000..03630f9c1 --- /dev/null +++ b/doc/manual/es/I2P.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/I2P62019-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).
Red de Anonimato (I2P)
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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Ikiwiki.raw.xml new file mode 100644 index 000000000..a029a128b --- /dev/null +++ b/doc/manual/es/Ikiwiki.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Ikiwiki32019-09-17 12:09:26fioddorMejora menor22019-09-17 12:07:08fioddorMejora menor12019-09-17 12:05:55fioddorSe crea la versión española.
Wiki y Blog (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á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) de Plinth. 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 Plinth (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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Infinoted.raw.xml new file mode 100644 index 000000000..aa5e5b85c --- /dev/null +++ b/doc/manual/es/Infinoted.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Infinoted22019-09-12 11:09:53fioddorMejora menor12019-09-12 11:08:05fioddorSe crea la versión española.
Servidor Gobby (infinoted)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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/LetsEncrypt.raw.xml b/doc/manual/es/LetsEncrypt.raw.xml new file mode 100644 index 000000000..299414986 --- /dev/null +++ b/doc/manual/es/LetsEncrypt.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/LetsEncrypt22019-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.
Certificados (Let's Encrypt)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 Nombres de Servicio 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/MLDonkey.raw.xml new file mode 100644 index 000000000..d20cbce49 --- /dev/null +++ b/doc/manual/es/MLDonkey.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/MLDonkey22019-09-11 14:51:57fioddorCorrecciones menores.12019-09-11 14:46:33fioddorSe crea la versión española.
Compartición de Archivos (MLDonkey)
¿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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/MatrixSynapse.raw.xml b/doc/manual/es/MatrixSynapse.raw.xml new file mode 100644 index 000000000..63a63c429 --- /dev/null +++ b/doc/manual/es/MatrixSynapse.raw.xml @@ -0,0 +1,10 @@ + + +
es/FreedomBox/Manual/MatrixSynapse62019-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).
Servidor de Mensajería Instantánea (chat) (Matrix Synapse)
¿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. Tras configurar un dominio verás que el servicio se está ejecutando. El servicio estará accesible en el dominio de FreedomBox configurado. Todos los usuarios registrados tendrán sus IDs Matrix @usuario:dominio. Actualmente no podrás cambiar el dominio una vez esté configurado.
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: 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/MediaWiki.raw.xml new file mode 100644 index 000000000..e814c7e85 --- /dev/null +++ b/doc/manual/es/MediaWiki.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/MediaWiki62019-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.
Wiki (MediaWiki)
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 Plinth.
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 Wiki
Editor VisualComo su nombre indica, el nuevo Editor Visual de MediaWiki ofrece un interfaz de usuario visual (WYSIWYG) para crear páginas del wiki. Por desgracia aún no está disponible en la versión actual de MediaWiki en Debian. 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. 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Minetest.raw.xml new file mode 100644 index 000000000..70f39a0b5 --- /dev/null +++ b/doc/manual/es/Minetest.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Minetest22019-09-04 09:50:46fioddorCorrección menor12019-09-04 09:50:27fioddorSe crea la versión española.
Block Sandbox (Minetest)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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Monkeysphere.raw.xml new file mode 100644 index 000000000..e85dd3998 --- /dev/null +++ b/doc/manual/es/Monkeysphere.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Monkeysphere12019-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 SSH 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Mumble.raw.xml new file mode 100644 index 000000000..90caca564 --- /dev/null +++ b/doc/manual/es/Mumble.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Mumble12019-09-16 10:58:59fioddorSe crea la versión española.
Conversaciones de Voz (Mumble)
¿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 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/NameServices.raw.xml new file mode 100644 index 000000000..976789d37 --- /dev/null +++ b/doc/manual/es/NameServices.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/NameServices12019-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 oculto Tor 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Networks.raw.xml new file mode 100644 index 000000000..89b1834eb --- /dev/null +++ b/doc/manual/es/Networks.raw.xml @@ -0,0 +1,9 @@ + + +
es/FreedomBox/Manual/Networks112019-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 de 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 cosumo 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 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 clintes 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 mdiante 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 de Red ManualFreedomBox 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. 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/OpenVPN.raw.xml new file mode 100644 index 000000000..e290c64ff --- /dev/null +++ b/doc/manual/es/OpenVPN.raw.xml @@ -0,0 +1,7 @@ + + +
es/FreedomBox/Manual/OpenVPN42019-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.
Red Privada Virtual (OpenVPN)
¿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 Plinth 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]]>
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.
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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/PageKite.raw.xml b/doc/manual/es/PageKite.raw.xml new file mode 100644 index 000000000..b53c4f856 --- /dev/null +++ b/doc/manual/es/PageKite.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/PageKite12019-06-20 15:13:14fioddorSe crea la versión española.
Visibilidad Publica (PageKite)
¿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 Plinth, 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/Power.raw.xml b/doc/manual/es/Power.raw.xml new file mode 100644 index 000000000..4b8510a8f --- /dev/null +++ b/doc/manual/es/Power.raw.xml @@ -0,0 +1,5 @@ + + +
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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Privoxy.raw.xml new file mode 100644 index 000000000..62ea9d386 --- /dev/null +++ b/doc/manual/es/Privoxy.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Privoxy22019-09-16 11:36:07fioddor12019-09-16 11:33:00fioddorSe crea la versión española.
Proxy Web (Privoxy)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 Plinth 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Quassel.raw.xml new file mode 100644 index 000000000..25faadfe1 --- /dev/null +++ b/doc/manual/es/Quassel.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Quassel22019-09-12 12:18:51fioddorSe crea la versión española.12019-09-12 12:11:29fioddorSe crea la versión española.
Cliente IRC (Quassel)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 Plinth 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.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 Conectar con el Núcleo. Connect to Core Haz clic en el botón Añadir para abrir el diálogo Añadir Cuenta al Núcleo. Add Core Account Rellena cualquier cosa en el campo Nombre de Cuenta. Introduce el hostname DNS de tu FreedomBox en el campo Hostname. 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 Recordarme. Tras pulsar OK en el diálogo Añadir Cuenta al Núcleo deberías ver la cuenta en el diálogo Conectar con el 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 Desconocido 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. Core Configuration Wizard 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 contraseña para que recuerde la contraseña para futuras sesiones. Haz clic en Siguiente. Create Admin User Page En la página Seleccionar Backend de Almacenamiento selecciona SQLite y haz clic en Confirmar. 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 Configuración de 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 Configuración de 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 SSL. 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/Radicale.raw.xml b/doc/manual/es/Radicale.raw.xml new file mode 100644 index 000000000..230b60a20 --- /dev/null +++ b/doc/manual/es/Radicale.raw.xml @@ -0,0 +1,29 @@ + + +
es/FreedomBox/Manual/Radicale82019-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).
Agenda (Radicale)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 (Plinth) 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 Plinth con Radicale sobre Tor es lo mismo que sobre la red en claro, en resumen: Cuando hayas ingresado a Plinth 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/Repro.raw.xml b/doc/manual/es/Repro.raw.xml new file mode 100644 index 000000000..5b3fda4eb --- /dev/null +++ b/doc/manual/es/Repro.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Repro12019-09-14 08:59:56fioddorSe crea la versión española (traducción incompleta).
Servidor SIP (Repro)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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/Roundcube.raw.xml b/doc/manual/es/Roundcube.raw.xml new file mode 100644 index 000000000..4dfee2339 --- /dev/null +++ b/doc/manual/es/Roundcube.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Roundcube52019-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.
Cliente de Correo Electrónico (Email) (Roundcube)
¿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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Searx.raw.xml new file mode 100644 index 000000000..1d4e1b076 --- /dev/null +++ b/doc/manual/es/Searx.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Searx32019-09-16 12:06:12fioddorCorrección menor22019-09-16 12:04:34fioddorSe crea la versión española.12019-09-16 11:39:36fioddor
Búsqueda Web (Searx)
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. 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/SecureShell.raw.xml new file mode 100644 index 000000000..3271c75bf --- /dev/null +++ b/doc/manual/es/SecureShell.raw.xml @@ -0,0 +1,8 @@ + + +
es/FreedomBox/Manual/SecureShell32019-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á connectado 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 Plinth: Cuenta de AdminAl crear una cuenta en Plinth 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 a Plinth es que no necesitas hacer esto. Puedes usar la cuenta de usuario de Plinth 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 Plinth 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 Plinth los servicios ocultos mediante Tor puedes acceder a tu FreedomBox mediante ssh sobre Tor. Instala netcat-openbsd. Edita ~/.ssh/config para habilitar conexiones sobre Tor. Añade lo siguiente: Replace 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 oculto de 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 Plinth usa la página Cambiar contraseña. El usuario por debecto fbx no se administra en Plinth y su contraseña no se puede cambiar desde la interfaz web. 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. 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Security.raw.xml new file mode 100644 index 000000000..e62a36dca --- /dev/null +++ b/doc/manual/es/Security.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Security22019-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.
SeguridadCuando 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 Restringir ingresos por consola 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.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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/ServiceDiscovery.raw.xml new file mode 100644 index 000000000..006f58cbb --- /dev/null +++ b/doc/manual/es/ServiceDiscovery.raw.xml @@ -0,0 +1,5 @@ + + +
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 HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, November 9th 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.xml b/doc/manual/es/Shadowsocks.raw.xml new file mode 100644 index 000000000..ef89f5b77 --- /dev/null +++ b/doc/manual/es/Shadowsocks.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Shadowsocks22019-09-14 09:52:23fioddorCorrección menor12019-09-14 09:45:29fioddorSe crea la versión española.
Proxy SOCKS5 (Shadowsocks)
¿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 de Plinth.
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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/Snapshots.raw.xml b/doc/manual/es/Snapshots.raw.xml new file mode 100644 index 000000000..5981cc1cf --- /dev/null +++ b/doc/manual/es/Snapshots.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Snapshots12019-06-20 14:29:35fioddorSe crea la versión española.
InstantáneasLas Instantáneas te permiten crear instantáneas del sistema de archivos y devolver al sistema a un estado anterior. Nota: Esta funcionalidad requier 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Storage.raw.xml new file mode 100644 index 000000000..c9bb91683 --- /dev/null +++ b/doc/manual/es/Storage.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Storage12019-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 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Syncthing.raw.xml new file mode 100644 index 000000000..ee6f97a91 --- /dev/null +++ b/doc/manual/es/Syncthing.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Syncthing42019-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.
Sincronización de Archivos (Syncthing)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 oculto Tor. 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/TinyTinyRSS.raw.xml new file mode 100644 index 000000000..50cf8b2d5 --- /dev/null +++ b/doc/manual/es/TinyTinyRSS.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/TinyTinyRSS12019-09-13 17:05:05fioddorSe crea la versión española.
Lector de Feeds de Noticias (Tiny Tiny RSS)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 el interfaz web de 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Tor.raw.xml new file mode 100644 index 000000000..a001ff452 --- /dev/null +++ b/doc/manual/es/Tor.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Tor82019-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).
Red para el anonimato (Tor)
¿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 Oculto Tor para acceder a tu FreedomBoxEl Servicio Oculto Tor 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 Oculto Tor 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 Ocultos Tor 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 oculto. 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 Browser - Plinth Actualmente solo HTTP (puerto 80), HTTPS (puerto 443) y SSH (puerto 22) están accesibles a través del Servicio Oculto Tor 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 Plinth. En la parte inferior de página de Tor de Plinth 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Transmission.raw.xml new file mode 100644 index 000000000..e7aae4d11 --- /dev/null +++ b/doc/manual/es/Transmission.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Transmission62019-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.
BitTorrent (Transmission)
¿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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/Upgrades.raw.xml b/doc/manual/es/Upgrades.raw.xml new file mode 100644 index 000000000..8efc90ffa --- /dev/null +++ b/doc/manual/es/Upgrades.raw.xml @@ -0,0 +1,12 @@ + + +
es/FreedomBox/Manual/Upgrades82019-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 Plinth en en la página Actualizaciones de la sección Preferencias. 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.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 a 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: 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/Users.raw.xml new file mode 100644 index 000000000..7c75f0a77 --- /dev/null +++ b/doc/manual/es/Users.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/Users12019-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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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/ejabberd.raw.xml b/doc/manual/es/ejabberd.raw.xml new file mode 100644 index 000000000..625e282a6 --- /dev/null +++ b/doc/manual/es/ejabberd.raw.xml @@ -0,0 +1,5 @@ + + +
es/FreedomBox/Manual/ejabberd22019-09-05 12:44:11fioddorCorrección menor12019-09-05 11:59:04fioddorSe crea la versión española.
Servidor de Mensajería Instantánea (chat) (ejabberd)
¿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 Plinth 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 AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, November 9th 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.xml b/doc/manual/es/freedombox-manual.raw.xml new file mode 100644 index 000000000..9c79f9d52 --- /dev/null +++ b/doc/manual/es/freedombox-manual.raw.xml @@ -0,0 +1,13169 @@ + + +
+ + es/FreedomBox/Manual + + + 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 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. Una vez instalado el interfaz es fácil de usar, parecido a un teléfono inteligente. + Documentación relacionada: + + + + Aplicaciones de FreedomBox + + + + + Máquinas que soportan FreedomBox + + + + + Desgarga e Instalación + + + + + Manual + + + + + Ayuda en directo de la comunidad + + + +
+ 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 + + + 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 (llamado Plinth) 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 sopora 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 (Plinth) 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 (Plinth) 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 (Plinth). + 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 (Plinth) 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. 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 + +
+ Sitios Web de Usuario (User websites) (userdir) +
+ ¿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 Plinth + +
+
+ Usar User websites + El módulo está siempre activado y no ofrece configuración desde el interfaz web de Plinth. Actualmente ni siquiera muestra que exista. + 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 documentos que haya en este directorio cuando se reciban peticiones con la URI ~<un_usuario_de_plinth>. 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 + +
+
+
+ Red para el anonimato (Tor) +
+ ¿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 Oculto Tor para acceder a tu FreedomBox + El Servicio Oculto Tor 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 Oculto Tor 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 Ocultos Tor 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 oculto. 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 Browser - Plinth + + + + Actualmente solo HTTP (puerto 80), HTTPS (puerto 443) y SSH (puerto 22) están accesibles a través del Servicio Oculto Tor 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 Plinth. + En la parte inferior de página de Tor de Plinth 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 + + + +
+
+
+ BitTorrent (Transmission) +
+ ¿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). + + +
+
+
+
+ BitTorrent (Deluge) +
+ ¿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. +
+
+
+ Block Sandbox (Minetest) + 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 + + +
+
+
+ Agenda (Radicale) + 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 (Plinth) + + + 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 Plinth con Radicale sobre Tor es lo mismo que sobre la red en claro, en resumen: + + + Cuando hayas ingresado a Plinth 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. +
+
+
+ Servidor de Mensajería Instantánea (chat) (ejabberd) +
+ ¿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 Plinth 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) + + +
+
+
+ Servidor de Mensajería Instantánea (chat) (Matrix Synapse) +
+ ¿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. Tras configurar un dominio verás que el servicio se está ejecutando. El servicio estará accesible en el dominio de FreedomBox configurado. Todos los usuarios registrados tendrán sus IDs Matrix @usuario:dominio. Actualmente no podrás cambiar el dominio una vez esté configurado. +
+
+ 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: + + + + + + + +
+
+
+ Cliente de Correo Electrónico (Email) (Roundcube) +
+ ¿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 + + + +
+
+
+ Compartición de Archivos (Coquelicot) +
+ 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 Plinth. + + + 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. +
+
+
+
+ Compartición de Archivos (MLDonkey) +
+ ¿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. +
+
+
+ Sincronización de Archivos (Syncthing) + 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 oculto Tor. + 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. +
+
+
+ Servidor Gobby (infinoted) + 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 + + +
+
+
+ Cliente IRC (Quassel) + 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 Plinth + + + 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.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 Conectar con el Núcleo. + + + + + + + + + Connect to Core + + + + + + + + Haz clic en el botón Añadir para abrir el diálogo Añadir Cuenta al Núcleo. + + + + + + + + + Add Core Account + + + + + + + + Rellena cualquier cosa en el campo Nombre de Cuenta. Introduce el hostname DNS de tu FreedomBox en el campo Hostname. 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 Recordarme. + + + Tras pulsar OK en el diálogo Añadir Cuenta al Núcleo deberías ver la cuenta en el diálogo Conectar con el 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 Desconocido 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. + + + + + + + + + Core Configuration Wizard + + + + + + + + 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 contraseña para que recuerde la contraseña para futuras sesiones. Haz clic en Siguiente. + + + + + + + + + Create Admin User Page + + + + + + + + En la página Seleccionar Backend de Almacenamiento selecciona SQLite y haz clic en Confirmar. + + + + + + + + + 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 Configuración de 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 Configuración de 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 SSL. 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. +
+
+
+
+ Lector de Feeds de Noticias (Tiny Tiny RSS) + 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 el interfaz web de 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 + + + +
+
+
+ Servidor SIP (Repro) + + + App eliminada + + Repro ha sido eliminada de Debian 10 (Buster) y por tanto ya no está disponible en FreedomBox. + +
+
+ Proxy SOCKS5 (Shadowsocks) +
+ ¿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 de Plinth. +
+
+ 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/. +
+
+
+ Red Privada Virtual (OpenVPN) +
+ ¿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 Plinth 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]]> +
+
+
+ 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. + + +
+
+
+ Enlaces Externos + + + +
+
+
+ Conversaciones de Voz (Mumble) +
+ ¿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 + + +
+
+
+ Proxy Web (Privoxy) + 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 Plinth + + + + + + + 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. + + +
+
+
+ Búsqueda Web (Searx) +
+ 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. + + +
+
+
+ Wiki (MediaWiki) +
+ 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 Plinth. +
+
+ 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 +
+ 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. Por desgracia aún no está disponible en la versión actual de MediaWiki en Debian. 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. +
+
+
+
+
+ Wiki y Blog (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) de Plinth. 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 Plinth (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. + + +
+
+
+ Red de Anonimato (I2P) +
+ 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. + + +
+
+
+
+ Sistema +
+ 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. +
+ Funcionalidad de Estatdos de los 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 ocultos + + + + + 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 + + + + + + + + Backups: Paso 1 + + + + + Paso 2 + + + + + + + + Backups: Paso 2 + + + + + Paso 3 + + + + + + + + Backups: Paso 3 + + + + + Paso 4 + + + + + + + + Backups: Paso 4 + + + + + Paso 5 + + + + + + + + Backups: Paso 5 + + + + + Paso 6 + + + + + + + + Backups: Paso 6 + + + + + Paso 7 + + + + + + + + Backups: Paso 7 + + + +
+
+
+ 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 (Plinth) 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 (Plinth) tecleando en el navegador . + /freedombox también se puede usar como alias para /plinth + + + + Consejo: Guarda la URL del servicio FreedomBox (Plinth) antes de asignar la home a otra app. + + +
+
+
+ Administración de Servidor (Cockpit) + 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 Oculto Tor. 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. +
+
+
+ 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.png + + + +
+
+ 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. +
+
+ 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) + + +
+
+
+ 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 Plinth 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. 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 Networks. +
+
+ Puertos/Servicios + La siguiente tabla trata de documentar los puertos, servicios y sus estados por defecto en FreedomBox. Si encuentras esta página desactualizada mira lib/freedombox/first-run.d/90_firewall en el código fuente de Plinth y la página de estado del cortafuegos en Plinth. + + + + + + + + + + + + + Servicio + + + + + Puerto + + + + + Externo + + + + + Habilitado por defecto + + + + + Estado mostrado en Plinth + + + + + Administrado por Plinth + + + + + + Minetest + + + 30000/udp + + + + + + + + + {*} + + + + + + + + + + + + {X} + + + + + + + + + + + + (./) + + + + + + + + + + + + (./) + + + + + + + + XMPP Client + + + 5222/tcp + + + + + + + + + {*} + + + + + + + + + + + + {X} + + + + + + + + + + + + (./) + + + + + + + + + + + + (./) + + + + + + + + XMPP Server + + + 5269/tcp + + + + + + + + + {*} + + + + + + + + + + + + {X} + + + + + + + + + + + + (./) + + + + + + + + + + + + (./) + + + + + + + + XMPP Bosh + + + 5280/tcp + + + + + + + + + {*} + + + + + + + + + + + + {X} + + + + + + + + + + + + (./) + + + + + + + + + + + + (./) + + + + + + + + NTP + + + 123/udp + + + + + + + + + {o} + + + + + + + + + + + + (./) + + + + + + + + + + + + (./) + + + + + + + + + + + + (./) + + + + + + + + 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} + + + + + + + + +
+
+ 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 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: + +
+
+
+
+ Certificados (Let's Encrypt) + 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 Nombres de Servicio + + + + + + + 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 SSH 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. +
+
+ 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 oculto Tor 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. +
+
+ 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 de 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 cosumo 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 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 clintes 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 mdiante 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 de Red Manual + 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. +
+
+
+ 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. +
+
+ Visibilidad Publica (PageKite) +
+ ¿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 Plinth, 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. + + +
+
+
+ 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á connectado 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 Plinth: Cuenta de Admin + Al crear una cuenta en Plinth 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 a Plinth es que no necesitas hacer esto. Puedes usar la cuenta de usuario de Plinth 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 Plinth 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 Plinth los servicios ocultos mediante Tor puedes acceder a tu FreedomBox mediante ssh sobre Tor. Instala netcat-openbsd. + + Edita ~/.ssh/config para habilitar conexiones sobre Tor. + + Añade lo siguiente: + + Replace 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 oculto de 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 Plinth usa la página Cambiar contraseña. El usuario por debecto fbx no se administra en Plinth y su contraseña no se puede cambiar desde la interfaz web. + 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. +
+
+
+ Seguridad + 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 Restringir ingresos por consola 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.png + + + +
+
+ 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. +
+
+ 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 requier un sistema de archivos Btrfs. Todas las imágenes de disco de FreedomBox estables usan Btrfs. + + + + + + + + + Instantáneas + + + +
+
+ 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 + + + +
+
+ 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 Plinth en en la página Actualizaciones de la sección Preferencias. 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.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 a 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: + +
+
+
+ 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. + + + + + + + + + + + + + + Pioneer Edition FreedomBox Home Server Kits + + + + + + 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 + + + + + + + +
+ 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 + + + - + + + - + + + + + + + + + (./) + + + + + + 10/100/1000 + + + + + + + + + {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 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 €. 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, y + + + un cable Ethernet. + + +
+
+ Disponibilidad + El servidor casero FreedomBox Pioneer Edition es la primera versión comercial disponible de FreedomBox. + + + Precio: 82 EUR + + + + Tienda Olimex + + + +
+
+ Especificaciones del Hardware + + + 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 + + + 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) + + + 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+). +
+
+ 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 + FreedomBox Danube Edition + + + A limited number of units are planned to be shipped along with the release of FreedomBox. If you wish to get one, express your interest. + + + 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. + + + + + + + + + + + + +
+
+ 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 (aka. Plinth) 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 (f.ex. 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 Plinth 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 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 + + 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 (Plinth) 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 de Desarrollo 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 (Plinth): 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 (Plinth). + + + 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 (Plinth) 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 + This manual is meant for developers intending to develop applications for FreedomBox. It provides a step by step tutorial and an API reference. +
+ Writing Applications - Tutorial + This tutorial covers writing an application for FreedomBox. FreedomBox is a pure blend of Debian with a web interface, known as Plinth, that configures its applications. We shall discuss various aspects of building an application for FreedomBox, by creating an example application. + There are two parts to writing a FreedomBox application. First is to make sure that the application is available as a Debian package uploaded to the repositories. This is the majority of the work involved. However, if an application is already available in Debian repositories, it is trivial to build a FreedomBox UI for it. The second part of writing an application for FreedomBox is to provide a thin web interface layer for configuring the application. This is done by extending Plinth's user interface to provide visibility to the application and to let the user control its operations in a highly simplified way. This layer is referred to as 'Plinth application'. + Plinth applications can either be distributed as part of Plinth source code by submitting the applications to the Plinth project or they can distributed independently. This tutorial covers writing an application that is meant to be distributed as part of Plinth. However, writing independent Plinth applications is also very similar and most of this tutorial is applicable. + + + Note + + The term application, in this tutorial, is used to mean multiple concepts. FreedomBox application is a combination of Debian package and a web interface layer. The web interface layer is also called a Plinth application which is very similar to and built upon a Django application. + +
+ Before we begin + Plinth is a web interface built using Python3 and Django. FreedomBox applications are simply Django applications within the Plinth project. Hence, for the most part, writing a FreedomBox application is all about writing a Django application. + You should start by reading the Django tutorial. All the concepts described there are applicable for how plinth and its applications are be built. +
+
+ Picking an application + We must first, of course, pick an application to add to FreedomBox. For the purpose of this tutorial, let us pick Tiny Tiny RSS. The project description reads as, Tiny Tiny RSS is an open source web-based news feed (RSS/Atom) reader and aggregator, designed to allow you to read news from any location, while feeling as close to a real desktop application as possible. + + + Choosing an application + + When choosing an application we must make sure that the application respects users' freedom and privacy. By choosing to use FreedomBox, users have explicitly made a choice to keep the data with themselves, to not provide privacy compromising data to centralized entities and to use Free Software that respects their Software Freedom. These are not properties of some of the applications in FreedomBox but all applications must adhere to these principles. Applications should not even ask the users questions to this effect, because users have already made a choice. + +
+
+ Packaging the application + Majority of the effort in creating an application for FreedomBox is to package it for Debian and get it uploaded to Debian repositories. Going through the process of packaging itself is outside the scope of this tutorial. It is, however, well documented elsewhere. You should start here. + Debian packaging might seem like an unnecessary process that takes time with its adherence to standards, review process, legal checks, etc. However, upon close examination, one will find that without these steps the goals of the FreedomBox project cannot be met. Some of the advantages of Debian packaging are listed below: + + + Legal check ensures that proprietary licensed code or code with bad licenses does not inadvertently creep in. + + + Libraries have to be packaged separately easing security handling. When a security vulnerability is identified in a library, just the library will have to be updated and not all the applications that depend on it. + + + Upgrades become smoother. The dependency handling of the packaging system, configuration handling tools, tools to deal with various types of well known files help with ensuring a proper upgrade. + + + Collaborative maintenance teams ensure that the package is well cared for even if you get busy with other work and can't spend time on your package. Following standards and using common infrastructure is critical to enable this development methodology. + + +
+
+ Creating the project structure + Create a directory structure as follows with empty files. We will fill them up in a step-by-step manner. + / + | + +- plinth/ + | | + | +- modules/ + | | + | +- ttrss/ + | | + | +- __init__.py + | | + | +- forms.py + | | + | +- urls.py + | | + | +- views.py + | | + | +- templates/ + | | | + | | +- ttrss.html + | | + | +- tests + | | + | +- __init__.py + | + +- actions/ + | | + | +- ttrss + | + +- data/ + | + +- etc/ + | + +- plinth/ + | + +- modules-enabled/ + | + +- ttrss]]> + The __init__.py indicates that the directory in which it is present is a Python module. For now, it is an empty file. + Plinth's setup script setup.py will automatically install the plinth/modules/ttrss directory (along with other files described later) to an appropriate location. If you are creating an application that stays independent and outside of Plinth source tree, then your setup.py script will need to install it a proper location on the system. The plinth/modules/ directory is a Python3 namespace package. So, you can install it with the plinth/modules/ directory structure into any Python path and still be discovered as plinth.modules.*. +
+
+ Tell Plinth that we exist + The first thing to do is tell Plinth that our application exists. This is done by writing a small file with the Python import path to our application and placing it in data/etc/plinth/modules-enabled/. Let us create this file ttrss: + + This file is automatically installed to /etc/plinth/modules-enabled/ by Plinth's installation script setup.py. If we are writing a module that resides independently outside the Plinth's source code, the setup script will need to copy it to the target location. Further, it is not necessary for the application to be part of the plinth.modules namespace. It can, for example, be plinth_ttrss. +
+
+ Writing the URLs + For a user to visit our application in Plinth, we need to provide a URL. When the user visits this URL, a view is executed and a page is displayed. In urls.py write the following: + + This routes the /apps/ttrss/ URL to a view called index defined in plinth/modules/ttrss/views.py. This is no different than how routing URLs are written in Django. See Django URL dispatcher for more information. +
+
+ Adding a menu item + We have added a URL to be handled by our application but this does not yet show up to be a link in Plinth web interface. Let us add a link in the applications list. In __init__.py add the following: + + As soon as Plinth starts, it will load all the enabled modules into memory. After this, it gives a chance to each of the modules to initialize itself by calling the init() method if there is such a method available as <app>.init(). Here we have implemented this method and added our menu item to the applications menu as part of the initialization process. + We wish to add our menu item to the list of applications which is why we have retrieved the applications menu which is available under the main menu. After this we add our own menu item to this menu. There are several parameters during this process that are important: + + + In the first parameter we are providing the display name to use for our application when showing the menu item. + + + In the second parameter we are providing the icon to show for this menu item. This is an icon from the Twitter Bootstrap library. See + the Twitter Bootstrap library documentation for a list of available icons. We can pick an icon from the available list of icons and just mention its glyphicon class as name here. + + + The third parameter is the name of the URL we have created for our application. Note that when including this application's URLs, Plinth will automatically set the name of the module as the Django + URL namespace. Hence it is ttrss:index and not just index. + + + The final parameter is a short description of the application. + + + We have used the application menu item to insert our own menu item as a child. To be able to use the application menu item, we need to make sure that the module providing the application menu is loaded before our application is loaded. We will do that in the next step. +
+
+ Specifying module dependencies + Specifying a simple list of applications to be loaded before our application provided to Plinth is sufficient. Add this in __init__.py. + + Plinth will now make sure that the apps module is loaded before our module is loaded. Application initialization is also ensured to happen in this order. We can safely use any features of this module knowing that they have been initialized. + + + Circular dependencies + + Circular dependencies are not possible among Plinth applications. Attempting to add them will result in error during startup. + +
+
+ Writing the enable/disable form + We wish to provide a user interface to the user to enable and disable the application. Complex modules may require more options but this is sufficient for our application. Add the following forms.py. + + This creates a Django form that shows a single option to enable/disable the application. It also shows its current state. This is how a regular Django form is built. See Django Forms documentation for more information. + + + Too many options + + Resist the temptation to create a lot of configuration options. Although this will put more control in the hands of the users, it will make FreedomBox less usable. FreedomBox is a consumer product. Our target users are not technically savvy and we have make most of the decisions on behalf of the user to make the interface as simple and easy to use as possible. + +
+
+ Writing a view + In views.py, let us add a view that can handle the URL we have provided above. + + This view works with the form we created in the previous step. It shows the current status of the service in form. This status is retrieved with the help of get_status() helper method. When the form is posted, again this view is called and it verifies whether the form's input values are correct. If so, it will apply the actions necessary for changed form values using the _apply_changes() method. +
+
+ Getting the current status of the application + The view in the previous setup requires the status of the application to be retrieved using the get_status() method. Let us implement that method in views.py. + + This method retrieves the various statuses of the application for display in the view. Currently, we only need to show whether the application is enabled or disabled. So, we retrieve that using a helper method defined in __init__.py. + + This method uses one of the several action utilities provided by Plinth. This method checks whether a webserver configuration named 50-tt-rss is enabled. +
+
+ Displaying the application page + The view that we have written above requires a template file known as ttrss.html to work. This template file controls how the web page for our application is displayed. Let us create this template file in templates/ttrss.html. + News Feed Reader (Tiny Tiny RSS) + +

Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, + designed to allow you to read news from any location, while feeling + as close to a real desktop application as possible.

+ +

Configuration

+ +
+ {% csrf_token %} + + {{ form|bootstrap }} + + +
+ +{% endblock %}]]>
+ This template extends an existing template known as base.html. This template is available in Plinth core to provide all the basic layout, styling, menus, JavaScript and CSS libraries. We will override the content area of the base template and keep the rest. + Yet again, there is nothing special about the way this template is written. This is a regular Django template. See Django Template documentation. + For styling and UI components, Plinth uses the Twitter Bootstrap project. See Bootstrap documentation for reference. +
+
+ Applying the changes from the form + The view we have created displays the form and processes the form after the user submits it. It used a helper method called _apply_changes() to actually get the work done. Let us implement that method in views.py. + + We check to make sure that we don't try to disable the application when it is already disabled or try to enable the application when it is already enabled. Although Plinth's operations are idempotent, meaning that running them twice will not be problematic, we still wish avoid unnecessary operations for the sake of speed. + We are actually perform the operation using Plinth actions. We will implement the action to be performed a bit later. + After we perform the operation, we will show a message on the response page showing that the action was successful or that nothing happened. We use the Django messaging framework to accomplish this. See Django messaging framework for more information. +
+
+ Installing packages required for the application + Plinth takes care of installing all the Debian packages required for our application to work. All we need to do is specify the list of the Debian packages required using a decorator on our view as follows: + + The first time this application's view is accessed, Plinth shows a package installation page and allows the user to install the required packages. After the package installation is completed, the user is shown the application's configuration page. + If there are configuration tasks to be performed immediately before or after the package installation, Plinth provides hooks for it. The before_install= and on_install= parameters to the @package.required decorator take a callback methods that are called before installation of packages and after installation of packages respectively. See the reference section of this manual or the plinth.package module for details. Other modules in Plinth that use this feature provided example usage. +
+
+ Writing actions + The actual work of performing the configuration change is carried out by a Plinth action. Actions are independent scripts that run with higher privileges required to perform a task. They are placed in a separate directory and invoked as scripts via sudo. For our application we need to write an action that can enable and disable the web configuration. We will do this by creating a file actions/ttrss. + + This is a simple Python3 program that parses command line arguments. While Python3 is preferred, it can be written in other languages also. It uses a helper utility provided by Plinth to actually enable and disable Apache2 web server configuration. + This script is automatically installed to /usr/share/plinth/actions by Plinth's installation script setup.py. Only from here will there is a possibility of running the script under sudo. If you are writing an application that resides indenpendently of Plinth's source code, your setup.py script will need to take care of copying the file to the target location. +
+
+ Creating diagnostics + Plinth provides a simple API for showing diagnostics results. The application has to implement a method for actually running the diagnostics and return the results as a list. Plinth then takes care of calling the diagnostics method and displaying the list in a formatted manner. + To implement the diagnostics method, method called diagnose() has to be available as <app>.diagnose(). It must return a list in which each item is the result of a test performed. The item itself is a two-tuple containing the display name of the test followed by the result as passed, failed or error. + + There are several helpers available to implement some of the common diagnostic tests. For our application we wish to implement a test to check whether the /ttrss URL is accessible. Since this is a commonly performed test, there is a helper method available and we have used it in the above code. The {host} tag replaced with various IP addresses, hostnames and domain names by the helper to produce different kinds of URLs and they are all tested. Results for all tests are returned which we then pass on to Plinth. + The user can trigger the diagnostics test by going to System -> Diagnostics page. This runs diagnostics for all the applications. If we want users to be able to run diagnostics specifically for this application, we can include a button for it in our template immediately after the application description. + +
+
+ Logging + Sometimes we may feel the need to write some debug messages to the console and Plinth log file. Doing this in Plinth is just like doing this any other Python application. + + For more information see Python logging framework documentation. +
+
+ Adding a License + Plinth is licensed under the GNU Affero General Public License Version 3 or later. FreedomBox UI applications, which run as modules under Plinth, also need to be under the same license or under a compatible license. The license of our application needs to clear for our application to be accepted by users and other developers. Let us add license headers to our application. + . +#]]> + The above header needs to be present in every file of the application. It is suitable for Python files. However, in template files, we need to modify it slightly. + . +# +{% endcomment %} + +...]]> +
+
+ Internationalization + Every string message that is visible to the user must be localized to user's native language. For this to happen, our application needs to be internationalized. This requires marking the user visible messages for translation. Plinth applications use the Django's localization methods to make that happen. + + Notice that the page's title is wrapped in the _() method call. Let us do that for the menu item of the application too. + + Notice that in this case, we have used the ugettext_lazy and in the first case we have used the regular ugettext. This is because in the second case the gettext lookup is made once and reused for every user looking at the interface. These users may each have a different language set for their interface. Lookup made for one language should not be used for other users. The _lazy method provided by Django makes sure that the return value is an object that will actually be converted to string at the final moment when the string is being displayed. In the first case, the looked is made and string is returned immediately. + All of this is the usual way internationalization is done in Django. See Django internationalization and localization documentation for more information. +
+
+ Coding standards + For readability and easy collaboration it is important to follow common coding standards. Plinth uses the Python coding standards and uses the pylint and flake8 tools to check if the there are any violations. Run these tools on our application and fix any errors and warnings. Better yet, integrate these tools into your favorite IDE for on-the-fly checking. + For the most part, the code we have written so far, is already compliant with the coding standards. This includes variable/method naming, indentation, document strings, comments, etc. One thing we have to add are the module documentation strings. Let us add those. In __init__.py add the top: + +
+
+
+ Reference Guide + This section describes Plinth API that is most frequently used by application. Note that since Plinth is under development and has not yet declared a stable API, this API is subject to change. This is not usually a problem because all the Plinth applications currently reside in Plinth source repository itself and are updated when the API is updated. +
+ Applications + These methods are optionally provided by the application and Plinth calls/uses them if they are present. +
+ <application>.init() + Optional. This method is called by Plinth soon after all the applications are loaded. The init() call order guarantees that other applications that this application depends on will be initialized before this application is initialized. +
+
+ <application>.diagnose() + Optional. Called when the user invokes system-wide diagnostics by visiting System -> Diagnositcs. This method must return an array of diagnostic results. Each diagnostic result must be a two-tuple with first element as a string that is shown to the user as name of the test and second element is the result of the test. It must be one of passed, failed, error. Example return value: + +
+
+ <appliation>.depends + Optional. This module property must contain a list of all applications that this application depends on. The application is specified as string containing the full module load path. For example, plinth.modules.apps. +
+
+ plinth.package.required(package_list, before_install=None, on_install=on_install) + Make sure that a set of Debian packages are installed before a view can be accessed. If the packages are not currently installed on the system, a special installation view is displayed showing the list of packages to be installed. If the user chooses to proceed, package installation will start and an installation progress screen will be shown. After completion of the installation process, the original view is shown. + The package_list must be an iterable containing the Debian package names as strings. If provided, the before_install callable is called just before the installation process starts. Similarly, on_install callable is called just after the package installation completes. +
+
+
+ Actions + Plinth's web front does not directly change any aspect of the underlying operating system. Instead, it calls upon Actions, as shell commands. Actions live in /usr/share/plinth/actions directory. They require no interaction beyond passing command line arguments or taking sensitive arguments via stdin. They change the operation of the services and applications of the FreedomBox and nothing else. These actions are also directly usable by a skilled administrator. + The following methods are provided by Plinth to run actions and to implement them easily by reusing code for common tasks. +
+ plinth.actions.run(action, options=None, input=None, async=False) + Run an action command present under the actions/ directory. This runs subprocess.Popen() after some checks. The action must be present in the actions/ directory. + options are a list of additional arguments to pass to the command. If input is given it must be bytearray containing the input to pass on to the executed action. If async is set to True, the method will return without waiting for the command to finish. +
+
+ plinth.actions.superuser_run(action, options=None, input=None, async=False) + This is same as plinth.actions.run() except the command is run with superuser privelages. +
+
+ plinth.action_utils + Several utilities to help with the implementation of actions and diagnostic tests are implemented in this module. Refer to the module source code for a list of these methods and their documentation. +
+
+
+ Menus +
+ plinth.cfg.main_menu + This is a reference to the global main menu. All menu entries in Plinth are descendents of this menu item. See Menu.add_item() and Menu.add_urlname() for adding items to this menu or its children. +
+
+ plinth.menu.Menu.get(self, urlname, url_args=None, url_kwargs=None) + Return a child of this menu item. urlname must be the name of a URL as configured in Django. django.core.urlresolvers.reverse() is called before the lookup for child menu item is performed. url_args and url_kwargs are passed on to reverse(). +
+
+ plinth.menu.Menu.add_item(self, label, icon, url, order=50) + Add a menu item as a child to the current menu item. label is the user visible string shown for the menu item. icon must be a glyphicon class from the Twitter Bootstrap library. url is the relative URL to which this menu item will take the user to. +
+
+ plinth.menu.Menu.add_urlname(self, label, icon, urlname, order=50, url_args=None, url_kwargs=None) + Same as plinth.menu.Menu.add_item() but instead of URL as input it is the name of a URL as configured in Django. django.core.urlresolvers.reverse() is called before it is added to the parent menu item. url_args and url_kwargs are passed on to reverse(). +
+
+
+ Services +
+ plinth.service.Service.__init__(self, service_id, name, ports=None, is_external=False, enabled=True) + Create a new Service object to notify all applications about the existence and status of a given application. service_id is a unique identifier for this application. name is a display name of this application that is shown by other applications such as on the firewall status page. ports is a list of names recognized by firewalld when enabling or disabling firewalld services. If is_external is true, the ports for this service are accessible from external interfaces, that is, from the Internet. Otherwise, the service is only available for client connected via LAN. enabled is the current state of the application. +
+
+ plinth.service.Service.is_enabled(self) + Return whether the service is currently enabled. +
+
+ plinth.service.Service.notify_enabled(self, sender, enabled) + Notify other applications about the change of status of this application. sender object should identify which application made the change. enabled is a boolean that signifies whether the application is enabled (= True) or disabled (= False). + This is typically caught by the firewall application to enable or disable the ports corresponding to an application. +
+
+
+
+
+ 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 (Plinth) 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 (Plinth) 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 (Plinth) desde el archivo de paquetes de Debian. Actualmente solo se soportan Stretch (estable), Buster (en pruebas) y Sid (inestable). Para instalar el servicio FreedomBox (Plinth) ejecuta: + + + + + + También puedes obtener el servicio FreedomBox (Plinth) en su repositorio Git o instalarlo desde el código fuente. + + +
+
+ Capturas de pantalla + + + + + + + + Home Page + + + + + + + + + + Apps Page + + + + + + + + + + System Page + + + + + + + + + + + + Enabling Tor Hidden Services + + + + + + + + + + Newsfeed from anywhere + + + + + + + + + + Email Client + + + + + + + + + + + + Manual Pages + + + + + + + + + + About Page + + + + +
+
+ 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 (Plinth). Puedes contribuir al servicio FreedomBox (Plinth) 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 (Plinth) 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 (Plinth) 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_v49.png b/doc/manual/es/images/Backups_Step1_v49.png new file mode 100644 index 000000000..0d3ea5c8f Binary files /dev/null and b/doc/manual/es/images/Backups_Step1_v49.png differ diff --git a/doc/manual/es/images/Backups_Step2_v49.png b/doc/manual/es/images/Backups_Step2_v49.png new file mode 100644 index 000000000..9bc2c5393 Binary files /dev/null and b/doc/manual/es/images/Backups_Step2_v49.png differ diff --git a/doc/manual/es/images/Backups_Step3_v49.png b/doc/manual/es/images/Backups_Step3_v49.png new file mode 100644 index 000000000..fbd862844 Binary files /dev/null and b/doc/manual/es/images/Backups_Step3_v49.png differ diff --git a/doc/manual/es/images/Backups_Step4_v49.png b/doc/manual/es/images/Backups_Step4_v49.png new file mode 100644 index 000000000..a20cc3047 Binary files /dev/null and b/doc/manual/es/images/Backups_Step4_v49.png differ diff --git a/doc/manual/es/images/Backups_Step5_v49.png b/doc/manual/es/images/Backups_Step5_v49.png new file mode 100644 index 000000000..6c2b95718 Binary files /dev/null and b/doc/manual/es/images/Backups_Step5_v49.png differ diff --git a/doc/manual/es/images/Backups_Step6_v49.png b/doc/manual/es/images/Backups_Step6_v49.png new file mode 100644 index 000000000..841efc1a2 Binary files /dev/null and b/doc/manual/es/images/Backups_Step6_v49.png differ diff --git a/doc/manual/es/images/Backups_Step7_v49.png b/doc/manual/es/images/Backups_Step7_v49.png new file mode 100644 index 000000000..62b7f8019 Binary files /dev/null and b/doc/manual/es/images/Backups_Step7_v49.png differ diff --git a/doc/manual/es/images/DAVdroid-refresh.png b/doc/manual/es/images/DAVdroid-refresh.png new file mode 100644 index 000000000..b546ae364 Binary files /dev/null and b/doc/manual/es/images/DAVdroid-refresh.png differ diff --git a/doc/manual/es/images/DAVdroid-setup-account.png b/doc/manual/es/images/DAVdroid-setup-account.png new file mode 100644 index 000000000..94806c14b Binary files /dev/null and b/doc/manual/es/images/DAVdroid-setup-account.png differ diff --git a/doc/manual/es/images/DAVdroid-sync-account.png b/doc/manual/es/images/DAVdroid-sync-account.png new file mode 100644 index 000000000..fcdc08ffe Binary files /dev/null and b/doc/manual/es/images/DAVdroid-sync-account.png differ diff --git a/doc/manual/es/images/DateTime.png b/doc/manual/es/images/DateTime.png new file mode 100644 index 000000000..78958e5c2 Binary files /dev/null and b/doc/manual/es/images/DateTime.png differ diff --git a/doc/manual/es/images/DynamicDNS-Settings.png b/doc/manual/es/images/DynamicDNS-Settings.png new file mode 100644 index 000000000..5083ae1c1 Binary files /dev/null and b/doc/manual/es/images/DynamicDNS-Settings.png differ diff --git a/doc/manual/es/images/Firewall.png b/doc/manual/es/images/Firewall.png new file mode 100644 index 000000000..0b3fd68e0 Binary files /dev/null and b/doc/manual/es/images/Firewall.png differ diff --git a/doc/manual/es/images/LetsEncrypt-Certificate.png b/doc/manual/es/images/LetsEncrypt-Certificate.png new file mode 100644 index 000000000..55cb920ec Binary files /dev/null and b/doc/manual/es/images/LetsEncrypt-Certificate.png differ diff --git a/doc/manual/es/images/LetsEncrypt-Configure.png b/doc/manual/es/images/LetsEncrypt-Configure.png new file mode 100644 index 000000000..dfb61026e Binary files /dev/null and b/doc/manual/es/images/LetsEncrypt-Configure.png differ diff --git a/doc/manual/es/images/LetsEncrypt-NameServices.png b/doc/manual/es/images/LetsEncrypt-NameServices.png new file mode 100644 index 000000000..f0c5e6167 Binary files /dev/null and b/doc/manual/es/images/LetsEncrypt-NameServices.png differ diff --git a/doc/manual/es/images/LetsEncrypt.png b/doc/manual/es/images/LetsEncrypt.png new file mode 100644 index 000000000..e5827299b Binary files /dev/null and b/doc/manual/es/images/LetsEncrypt.png differ diff --git a/doc/manual/es/images/OPML.png b/doc/manual/es/images/OPML.png new file mode 100644 index 000000000..7347fec6a Binary files /dev/null and b/doc/manual/es/images/OPML.png differ diff --git a/doc/manual/es/images/Privoxy-BrowserSettings.png b/doc/manual/es/images/Privoxy-BrowserSettings.png new file mode 100644 index 000000000..cb00c1a25 Binary files /dev/null and b/doc/manual/es/images/Privoxy-BrowserSettings.png differ diff --git a/doc/manual/es/images/Privoxy-Installation.png b/doc/manual/es/images/Privoxy-Installation.png new file mode 100644 index 000000000..ecf4b459e Binary files /dev/null and b/doc/manual/es/images/Privoxy-Installation.png differ diff --git a/doc/manual/es/images/Quassel_Installation.png b/doc/manual/es/images/Quassel_Installation.png new file mode 100644 index 000000000..927ddcbc7 Binary files /dev/null and b/doc/manual/es/images/Quassel_Installation.png differ diff --git a/doc/manual/es/images/Quassel_PortForwarding.png b/doc/manual/es/images/Quassel_PortForwarding.png new file mode 100644 index 000000000..0559fa8f4 Binary files /dev/null and b/doc/manual/es/images/Quassel_PortForwarding.png differ diff --git a/doc/manual/es/images/Quasseldroid.png b/doc/manual/es/images/Quasseldroid.png new file mode 100644 index 000000000..835e4a78a Binary files /dev/null and b/doc/manual/es/images/Quasseldroid.png differ diff --git a/doc/manual/es/images/Radicale-Evolution-Docu.png b/doc/manual/es/images/Radicale-Evolution-Docu.png new file mode 100644 index 000000000..c918accd2 Binary files /dev/null and b/doc/manual/es/images/Radicale-Evolution-Docu.png differ diff --git a/doc/manual/es/images/Radicale-Plinth.png b/doc/manual/es/images/Radicale-Plinth.png new file mode 100644 index 000000000..6ac2545f4 Binary files /dev/null and b/doc/manual/es/images/Radicale-Plinth.png differ diff --git a/doc/manual/es/images/Security.png b/doc/manual/es/images/Security.png new file mode 100644 index 000000000..d59a2c091 Binary files /dev/null and b/doc/manual/es/images/Security.png differ diff --git a/doc/manual/es/images/Select-RSS-feed.png b/doc/manual/es/images/Select-RSS-feed.png new file mode 100644 index 000000000..f3b144adc Binary files /dev/null and b/doc/manual/es/images/Select-RSS-feed.png differ diff --git a/doc/manual/es/images/Storage.png b/doc/manual/es/images/Storage.png new file mode 100644 index 000000000..d2c2fe278 Binary files /dev/null and b/doc/manual/es/images/Storage.png differ diff --git a/doc/manual/es/images/Subscribe-dialog.png b/doc/manual/es/images/Subscribe-dialog.png new file mode 100644 index 000000000..91a81f7ce Binary files /dev/null and b/doc/manual/es/images/Subscribe-dialog.png differ diff --git a/doc/manual/es/images/Subscribe-to-feed.png b/doc/manual/es/images/Subscribe-to-feed.png new file mode 100644 index 000000000..759ebdd60 Binary files /dev/null and b/doc/manual/es/images/Subscribe-to-feed.png differ diff --git a/doc/manual/es/images/Syncthing_GUI.png b/doc/manual/es/images/Syncthing_GUI.png new file mode 100644 index 000000000..3d8ab2155 Binary files /dev/null and b/doc/manual/es/images/Syncthing_GUI.png differ diff --git a/doc/manual/es/images/Unsubscribe.png b/doc/manual/es/images/Unsubscribe.png new file mode 100644 index 000000000..6cb0d4c84 Binary files /dev/null and b/doc/manual/es/images/Unsubscribe.png differ diff --git a/doc/manual/es/images/WikiNews-feed.png b/doc/manual/es/images/WikiNews-feed.png new file mode 100644 index 000000000..582ff27ff Binary files /dev/null and b/doc/manual/es/images/WikiNews-feed.png differ diff --git a/doc/manual/es/images/a20-olinuxino-lime2.jpg b/doc/manual/es/images/a20-olinuxino-lime2.jpg new file mode 100644 index 000000000..887cb5970 Binary files /dev/null and b/doc/manual/es/images/a20-olinuxino-lime2.jpg differ diff --git a/doc/manual/es/images/a20-olinuxino-lime2_thumb.jpg b/doc/manual/es/images/a20-olinuxino-lime2_thumb.jpg new file mode 100644 index 000000000..e2186b3c3 Binary files /dev/null and b/doc/manual/es/images/a20-olinuxino-lime2_thumb.jpg differ diff --git a/doc/manual/es/images/a20-olinuxino-micro.jpg b/doc/manual/es/images/a20-olinuxino-micro.jpg new file mode 100644 index 000000000..5c6e4feb0 Binary files /dev/null and b/doc/manual/es/images/a20-olinuxino-micro.jpg differ diff --git a/doc/manual/es/images/a20-olinuxino-micro_thumb.jpg b/doc/manual/es/images/a20-olinuxino-micro_thumb.jpg new file mode 100644 index 000000000..b1ecec4ad Binary files /dev/null and b/doc/manual/es/images/a20-olinuxino-micro_thumb.jpg differ diff --git a/doc/manual/es/images/apu1d.jpg b/doc/manual/es/images/apu1d.jpg new file mode 100644 index 000000000..cbd61211f Binary files /dev/null and b/doc/manual/es/images/apu1d.jpg differ diff --git a/doc/manual/es/images/apu1d_thumb.jpg b/doc/manual/es/images/apu1d_thumb.jpg new file mode 100644 index 000000000..5a16039ad Binary files /dev/null and b/doc/manual/es/images/apu1d_thumb.jpg differ diff --git a/doc/manual/es/images/banana-pro_thumb.jpg b/doc/manual/es/images/banana-pro_thumb.jpg new file mode 100644 index 000000000..82818bb5a Binary files /dev/null and b/doc/manual/es/images/banana-pro_thumb.jpg differ diff --git a/doc/manual/es/images/beagleboard.jpg b/doc/manual/es/images/beagleboard.jpg new file mode 100644 index 000000000..1975a73c5 Binary files /dev/null and b/doc/manual/es/images/beagleboard.jpg differ diff --git a/doc/manual/es/images/beagleboard_thumb.jpg b/doc/manual/es/images/beagleboard_thumb.jpg new file mode 100644 index 000000000..cbaee9ff0 Binary files /dev/null and b/doc/manual/es/images/beagleboard_thumb.jpg differ diff --git a/doc/manual/es/images/checkmark.png b/doc/manual/es/images/checkmark.png new file mode 100644 index 000000000..2fd38192c Binary files /dev/null and b/doc/manual/es/images/checkmark.png differ diff --git a/doc/manual/es/images/cockpit-admin-user.png b/doc/manual/es/images/cockpit-admin-user.png new file mode 100644 index 000000000..42a254c0d Binary files /dev/null and b/doc/manual/es/images/cockpit-admin-user.png differ diff --git a/doc/manual/es/images/cockpit-enable.png b/doc/manual/es/images/cockpit-enable.png new file mode 100644 index 000000000..3de1a8e49 Binary files /dev/null and b/doc/manual/es/images/cockpit-enable.png differ diff --git a/doc/manual/es/images/cockpit-login.png b/doc/manual/es/images/cockpit-login.png new file mode 100644 index 000000000..e836a51a2 Binary files /dev/null and b/doc/manual/es/images/cockpit-login.png differ diff --git a/doc/manual/es/images/cockpit-logs.png b/doc/manual/es/images/cockpit-logs.png new file mode 100644 index 000000000..30cd43de3 Binary files /dev/null and b/doc/manual/es/images/cockpit-logs.png differ diff --git a/doc/manual/es/images/cockpit-mobile.png b/doc/manual/es/images/cockpit-mobile.png new file mode 100644 index 000000000..47897df7e Binary files /dev/null and b/doc/manual/es/images/cockpit-mobile.png differ diff --git a/doc/manual/es/images/cockpit-network1.png b/doc/manual/es/images/cockpit-network1.png new file mode 100644 index 000000000..a5015aa7e Binary files /dev/null and b/doc/manual/es/images/cockpit-network1.png differ diff --git a/doc/manual/es/images/cockpit-network2.png b/doc/manual/es/images/cockpit-network2.png new file mode 100644 index 000000000..ad3c5b9dc Binary files /dev/null and b/doc/manual/es/images/cockpit-network2.png differ diff --git a/doc/manual/es/images/cockpit-network3.png b/doc/manual/es/images/cockpit-network3.png new file mode 100644 index 000000000..42ba96d8f Binary files /dev/null and b/doc/manual/es/images/cockpit-network3.png differ diff --git a/doc/manual/es/images/cockpit-services1.png b/doc/manual/es/images/cockpit-services1.png new file mode 100644 index 000000000..d507648d0 Binary files /dev/null and b/doc/manual/es/images/cockpit-services1.png differ diff --git a/doc/manual/es/images/cockpit-services2.png b/doc/manual/es/images/cockpit-services2.png new file mode 100644 index 000000000..ad6697914 Binary files /dev/null and b/doc/manual/es/images/cockpit-services2.png differ diff --git a/doc/manual/es/images/cockpit-storage1.png b/doc/manual/es/images/cockpit-storage1.png new file mode 100644 index 000000000..0df8d8cae Binary files /dev/null and b/doc/manual/es/images/cockpit-storage1.png differ diff --git a/doc/manual/es/images/cockpit-storage2.png b/doc/manual/es/images/cockpit-storage2.png new file mode 100644 index 000000000..d1b835695 Binary files /dev/null and b/doc/manual/es/images/cockpit-storage2.png differ diff --git a/doc/manual/es/images/cockpit-system.png b/doc/manual/es/images/cockpit-system.png new file mode 100644 index 000000000..1bc7209f3 Binary files /dev/null and b/doc/manual/es/images/cockpit-system.png differ diff --git a/doc/manual/es/images/cockpit-terminal.png b/doc/manual/es/images/cockpit-terminal.png new file mode 100644 index 000000000..15c088aeb Binary files /dev/null and b/doc/manual/es/images/cockpit-terminal.png differ diff --git a/doc/manual/es/images/cubieboard2_thumb.jpg b/doc/manual/es/images/cubieboard2_thumb.jpg new file mode 100644 index 000000000..5f9eab185 Binary files /dev/null and b/doc/manual/es/images/cubieboard2_thumb.jpg differ diff --git a/doc/manual/es/images/danube_thumb.png b/doc/manual/es/images/danube_thumb.png new file mode 100644 index 000000000..097ff26a0 Binary files /dev/null and b/doc/manual/es/images/danube_thumb.png differ diff --git a/doc/manual/es/images/debian_thumb.png b/doc/manual/es/images/debian_thumb.png new file mode 100644 index 000000000..c021e8be0 Binary files /dev/null and b/doc/manual/es/images/debian_thumb.png differ diff --git a/doc/manual/es/images/deluge.png b/doc/manual/es/images/deluge.png new file mode 100644 index 000000000..4c22edb37 Binary files /dev/null and b/doc/manual/es/images/deluge.png differ diff --git a/doc/manual/es/images/deluge_connection_manager.png b/doc/manual/es/images/deluge_connection_manager.png new file mode 100644 index 000000000..c6005c9c2 Binary files /dev/null and b/doc/manual/es/images/deluge_connection_manager.png differ diff --git a/doc/manual/es/images/deluge_connection_manager_2.png b/doc/manual/es/images/deluge_connection_manager_2.png new file mode 100644 index 000000000..39e1c2813 Binary files /dev/null and b/doc/manual/es/images/deluge_connection_manager_2.png differ diff --git a/doc/manual/es/images/deluge_login.png b/doc/manual/es/images/deluge_login.png new file mode 100644 index 000000000..afe47ed78 Binary files /dev/null and b/doc/manual/es/images/deluge_login.png differ diff --git a/doc/manual/es/images/dreamplug.jpg b/doc/manual/es/images/dreamplug.jpg new file mode 100644 index 000000000..f24f7d78a Binary files /dev/null and b/doc/manual/es/images/dreamplug.jpg differ diff --git a/doc/manual/es/images/dreamplug_thumb.jpg b/doc/manual/es/images/dreamplug_thumb.jpg new file mode 100644 index 000000000..5c81fbd47 Binary files /dev/null and b/doc/manual/es/images/dreamplug_thumb.jpg differ diff --git a/doc/manual/es/images/freedombox-danube.jpg b/doc/manual/es/images/freedombox-danube.jpg new file mode 100644 index 000000000..02ca534f8 Binary files /dev/null and b/doc/manual/es/images/freedombox-danube.jpg differ diff --git a/doc/manual/es/images/freedombox-frontpage-2019-03-02.png b/doc/manual/es/images/freedombox-frontpage-2019-03-02.png new file mode 100644 index 000000000..2f8d65262 Binary files /dev/null and b/doc/manual/es/images/freedombox-frontpage-2019-03-02.png differ diff --git a/doc/manual/es/images/freedombox-screenshot-about.png b/doc/manual/es/images/freedombox-screenshot-about.png new file mode 100644 index 000000000..6026e9d08 Binary files /dev/null and b/doc/manual/es/images/freedombox-screenshot-about.png differ diff --git a/doc/manual/es/images/freedombox-screenshot-apps.png b/doc/manual/es/images/freedombox-screenshot-apps.png new file mode 100644 index 000000000..6eb5a8bcc Binary files /dev/null and b/doc/manual/es/images/freedombox-screenshot-apps.png differ diff --git a/doc/manual/es/images/freedombox-screenshot-home.png b/doc/manual/es/images/freedombox-screenshot-home.png new file mode 100644 index 000000000..56b5787bc Binary files /dev/null and b/doc/manual/es/images/freedombox-screenshot-home.png differ diff --git a/doc/manual/es/images/freedombox-screenshot-manual.png b/doc/manual/es/images/freedombox-screenshot-manual.png new file mode 100644 index 000000000..03d5678e0 Binary files /dev/null and b/doc/manual/es/images/freedombox-screenshot-manual.png differ diff --git a/doc/manual/es/images/freedombox-screenshot-roundcube.png b/doc/manual/es/images/freedombox-screenshot-roundcube.png new file mode 100644 index 000000000..9a73a2956 Binary files /dev/null and b/doc/manual/es/images/freedombox-screenshot-roundcube.png differ diff --git a/doc/manual/es/images/freedombox-screenshot-system.png b/doc/manual/es/images/freedombox-screenshot-system.png new file mode 100644 index 000000000..b8db5e1a0 Binary files /dev/null and b/doc/manual/es/images/freedombox-screenshot-system.png differ diff --git a/doc/manual/es/images/freedombox-screenshot-tor.png b/doc/manual/es/images/freedombox-screenshot-tor.png new file mode 100644 index 000000000..4da4c87cb Binary files /dev/null and b/doc/manual/es/images/freedombox-screenshot-tor.png differ diff --git a/doc/manual/es/images/freedombox-screenshot-ttrss.png b/doc/manual/es/images/freedombox-screenshot-ttrss.png new file mode 100644 index 000000000..384873216 Binary files /dev/null and b/doc/manual/es/images/freedombox-screenshot-ttrss.png differ diff --git a/doc/manual/es/images/icon-error.png b/doc/manual/es/images/icon-error.png new file mode 100644 index 000000000..ab6808fba Binary files /dev/null and b/doc/manual/es/images/icon-error.png differ diff --git a/doc/manual/es/images/ikiwiki_create.png b/doc/manual/es/images/ikiwiki_create.png new file mode 100644 index 000000000..76c3b771f Binary files /dev/null and b/doc/manual/es/images/ikiwiki_create.png differ diff --git a/doc/manual/es/images/ikiwiki_manage.png b/doc/manual/es/images/ikiwiki_manage.png new file mode 100644 index 000000000..56e5f616f Binary files /dev/null and b/doc/manual/es/images/ikiwiki_manage.png differ diff --git a/doc/manual/es/images/mldonkey.jpg b/doc/manual/es/images/mldonkey.jpg new file mode 100644 index 000000000..bad7549c9 Binary files /dev/null and b/doc/manual/es/images/mldonkey.jpg differ diff --git a/doc/manual/es/images/network_single.png b/doc/manual/es/images/network_single.png new file mode 100644 index 000000000..b4f8bfe4e Binary files /dev/null and b/doc/manual/es/images/network_single.png differ diff --git a/doc/manual/es/images/openvpn_connect.png b/doc/manual/es/images/openvpn_connect.png new file mode 100644 index 000000000..7c7861852 Binary files /dev/null and b/doc/manual/es/images/openvpn_connect.png differ diff --git a/doc/manual/es/images/openvpn_connected.png b/doc/manual/es/images/openvpn_connected.png new file mode 100644 index 000000000..10d4d6bc0 Binary files /dev/null and b/doc/manual/es/images/openvpn_connected.png differ diff --git a/doc/manual/es/images/openvpn_disconnect.png b/doc/manual/es/images/openvpn_disconnect.png new file mode 100644 index 000000000..ba471bfd2 Binary files /dev/null and b/doc/manual/es/images/openvpn_disconnect.png differ diff --git a/doc/manual/es/images/openvpn_download_profile.png b/doc/manual/es/images/openvpn_download_profile.png new file mode 100644 index 000000000..674d6a1b9 Binary files /dev/null and b/doc/manual/es/images/openvpn_download_profile.png differ diff --git a/doc/manual/es/images/openvpn_edit_domain_name.png b/doc/manual/es/images/openvpn_edit_domain_name.png new file mode 100644 index 000000000..f91429b39 Binary files /dev/null and b/doc/manual/es/images/openvpn_edit_domain_name.png differ diff --git a/doc/manual/es/images/openvpn_import_profile.png b/doc/manual/es/images/openvpn_import_profile.png new file mode 100644 index 000000000..509ded563 Binary files /dev/null and b/doc/manual/es/images/openvpn_import_profile.png differ diff --git a/doc/manual/es/images/openvpn_install_app.png b/doc/manual/es/images/openvpn_install_app.png new file mode 100644 index 000000000..7a077b582 Binary files /dev/null and b/doc/manual/es/images/openvpn_install_app.png differ diff --git a/doc/manual/es/images/openvpn_profile_created.png b/doc/manual/es/images/openvpn_profile_created.png new file mode 100644 index 000000000..cd1f46448 Binary files /dev/null and b/doc/manual/es/images/openvpn_profile_created.png differ diff --git a/doc/manual/es/images/pcduino3s.jpg b/doc/manual/es/images/pcduino3s.jpg new file mode 100644 index 000000000..1418fee7e Binary files /dev/null and b/doc/manual/es/images/pcduino3s.jpg differ diff --git a/doc/manual/es/images/pcduino3s_thumb.jpg b/doc/manual/es/images/pcduino3s_thumb.jpg new file mode 100644 index 000000000..b0075e5c8 Binary files /dev/null and b/doc/manual/es/images/pcduino3s_thumb.jpg differ diff --git a/doc/manual/es/images/pine64-plus.jpg b/doc/manual/es/images/pine64-plus.jpg new file mode 100644 index 000000000..eefaace0e Binary files /dev/null and b/doc/manual/es/images/pine64-plus.jpg differ diff --git a/doc/manual/es/images/pine64-plus_thumb.jpg b/doc/manual/es/images/pine64-plus_thumb.jpg new file mode 100644 index 000000000..d7eb92dd3 Binary files /dev/null and b/doc/manual/es/images/pine64-plus_thumb.jpg differ diff --git a/doc/manual/es/images/pioneer-edition.jpg b/doc/manual/es/images/pioneer-edition.jpg new file mode 100644 index 000000000..7d6241d5c Binary files /dev/null and b/doc/manual/es/images/pioneer-edition.jpg differ diff --git a/doc/manual/es/images/pioneer-edition_thumb.jpg b/doc/manual/es/images/pioneer-edition_thumb.jpg new file mode 100644 index 000000000..1916443ef Binary files /dev/null and b/doc/manual/es/images/pioneer-edition_thumb.jpg differ diff --git a/doc/manual/es/images/plinth_first_boot.png b/doc/manual/es/images/plinth_first_boot.png new file mode 100644 index 000000000..82916554e Binary files /dev/null and b/doc/manual/es/images/plinth_first_boot.png differ diff --git a/doc/manual/es/images/plinth_openvpn.png b/doc/manual/es/images/plinth_openvpn.png new file mode 100644 index 000000000..6a6aaf775 Binary files /dev/null and b/doc/manual/es/images/plinth_openvpn.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 new file mode 100644 index 000000000..6f749ccac Binary files /dev/null and b/doc/manual/es/images/quassel-client-1-connect-to-core.png 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 new file mode 100644 index 000000000..172a9abe1 Binary files /dev/null and b/doc/manual/es/images/quassel-client-10-setup-identity.png 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 new file mode 100644 index 000000000..62e855e30 Binary files /dev/null and b/doc/manual/es/images/quassel-client-11-setup-network-connection.png 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 new file mode 100644 index 000000000..a69a43dac Binary files /dev/null and b/doc/manual/es/images/quassel-client-12-server-info.png 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 new file mode 100644 index 000000000..c05043775 Binary files /dev/null and b/doc/manual/es/images/quassel-client-13-server-info-ssl.png 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 new file mode 100644 index 000000000..ec7933f1d Binary files /dev/null and b/doc/manual/es/images/quassel-client-14-setup-network-connection.png 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 new file mode 100644 index 000000000..e37885b71 Binary files /dev/null and b/doc/manual/es/images/quassel-client-15-quassel-main.png 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 new file mode 100644 index 000000000..a095d22ae Binary files /dev/null and b/doc/manual/es/images/quassel-client-2-add-core-account.png 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 new file mode 100644 index 000000000..8853c756d Binary files /dev/null and b/doc/manual/es/images/quassel-client-3-connect-to-core.png 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 new file mode 100644 index 000000000..db86866d0 Binary files /dev/null and b/doc/manual/es/images/quassel-client-4-untrusted-security-certficate.png 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 new file mode 100644 index 000000000..2c0061bdf Binary files /dev/null and b/doc/manual/es/images/quassel-client-5-untrusted-security-certificate.png 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 new file mode 100644 index 000000000..e80c8aa8f Binary files /dev/null and b/doc/manual/es/images/quassel-client-6-core-configuration-wizard.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 new file mode 100644 index 000000000..217db06b2 Binary files /dev/null and b/doc/manual/es/images/quassel-client-7-create-admin-user.png 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 new file mode 100644 index 000000000..9d20e6ac3 Binary files /dev/null and b/doc/manual/es/images/quassel-client-8-select-storage-backend.png 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 new file mode 100644 index 000000000..bef2a53af Binary files /dev/null and b/doc/manual/es/images/quassel-client-9-welcome-wizard.png differ diff --git a/doc/manual/es/images/radicale_web.png b/doc/manual/es/images/radicale_web.png new file mode 100644 index 000000000..f1205e5be Binary files /dev/null and b/doc/manual/es/images/radicale_web.png differ diff --git a/doc/manual/es/images/raspberry2_thumb.jpg b/doc/manual/es/images/raspberry2_thumb.jpg new file mode 100644 index 000000000..d3f4fa68a Binary files /dev/null and b/doc/manual/es/images/raspberry2_thumb.jpg differ diff --git a/doc/manual/es/images/raspberry_thumb.jpg b/doc/manual/es/images/raspberry_thumb.jpg new file mode 100644 index 000000000..376c21550 Binary files /dev/null and b/doc/manual/es/images/raspberry_thumb.jpg differ diff --git a/doc/manual/es/images/raspberrypi.jpg b/doc/manual/es/images/raspberrypi.jpg new file mode 100644 index 000000000..7aeff254d Binary files /dev/null and b/doc/manual/es/images/raspberrypi.jpg differ diff --git a/doc/manual/es/images/raspberrypi2.jpg b/doc/manual/es/images/raspberrypi2.jpg new file mode 100644 index 000000000..3cf8a890b Binary files /dev/null and b/doc/manual/es/images/raspberrypi2.jpg differ diff --git a/doc/manual/es/images/raspberrypi3.jpg b/doc/manual/es/images/raspberrypi3.jpg new file mode 100644 index 000000000..b92626af6 Binary files /dev/null and b/doc/manual/es/images/raspberrypi3.jpg differ diff --git a/doc/manual/es/images/raspberrypi3b_thumb.jpg b/doc/manual/es/images/raspberrypi3b_thumb.jpg new file mode 100644 index 000000000..c2b25a31b Binary files /dev/null and b/doc/manual/es/images/raspberrypi3b_thumb.jpg differ diff --git a/doc/manual/es/images/raspberrypi3bplus.jpg b/doc/manual/es/images/raspberrypi3bplus.jpg new file mode 100644 index 000000000..95e191050 Binary files /dev/null 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 new file mode 100644 index 000000000..7a7b504df Binary files /dev/null and b/doc/manual/es/images/raspberrypi3bplus_thumb.jpg differ diff --git a/doc/manual/es/images/roundcube-gmail.png b/doc/manual/es/images/roundcube-gmail.png new file mode 100644 index 000000000..20ea7d85f Binary files /dev/null and b/doc/manual/es/images/roundcube-gmail.png differ diff --git a/doc/manual/es/images/roundcube-riseup.png b/doc/manual/es/images/roundcube-riseup.png new file mode 100644 index 000000000..38848b40b Binary files /dev/null and b/doc/manual/es/images/roundcube-riseup.png differ diff --git a/doc/manual/es/images/searx-screenshot.png b/doc/manual/es/images/searx-screenshot.png new file mode 100644 index 000000000..d918d1168 Binary files /dev/null and b/doc/manual/es/images/searx-screenshot.png differ diff --git a/doc/manual/es/images/snapshots.png b/doc/manual/es/images/snapshots.png new file mode 100644 index 000000000..21e97959b Binary files /dev/null and b/doc/manual/es/images/snapshots.png differ diff --git a/doc/manual/es/images/star_off.png b/doc/manual/es/images/star_off.png new file mode 100644 index 000000000..2f99caea5 Binary files /dev/null and b/doc/manual/es/images/star_off.png differ diff --git a/doc/manual/es/images/star_on.png b/doc/manual/es/images/star_on.png new file mode 100644 index 000000000..6a64f936c Binary files /dev/null and b/doc/manual/es/images/star_on.png differ diff --git a/doc/manual/es/images/tor-bridge-configuration.png b/doc/manual/es/images/tor-bridge-configuration.png new file mode 100644 index 000000000..d7a267d47 Binary files /dev/null and b/doc/manual/es/images/tor-bridge-configuration.png differ diff --git a/doc/manual/es/images/tor-bridge-db.png b/doc/manual/es/images/tor-bridge-db.png new file mode 100644 index 000000000..18a88c02f Binary files /dev/null and b/doc/manual/es/images/tor-bridge-db.png differ diff --git a/doc/manual/es/images/tor-socks-firefox.png b/doc/manual/es/images/tor-socks-firefox.png new file mode 100644 index 000000000..0f9e43d30 Binary files /dev/null and b/doc/manual/es/images/tor-socks-firefox.png differ diff --git a/doc/manual/es/images/tor_browser_plinth.png b/doc/manual/es/images/tor_browser_plinth.png new file mode 100644 index 000000000..cd9649be4 Binary files /dev/null and b/doc/manual/es/images/tor_browser_plinth.png differ diff --git a/doc/manual/es/images/transmission.png b/doc/manual/es/images/transmission.png new file mode 100644 index 000000000..089dc0b0f Binary files /dev/null and b/doc/manual/es/images/transmission.png differ diff --git a/doc/manual/es/images/ttrss.png b/doc/manual/es/images/ttrss.png new file mode 100644 index 000000000..b7745cb9e Binary files /dev/null and b/doc/manual/es/images/ttrss.png differ diff --git a/doc/manual/es/images/ttrssapp1.png b/doc/manual/es/images/ttrssapp1.png new file mode 100644 index 000000000..f548a7f54 Binary files /dev/null and b/doc/manual/es/images/ttrssapp1.png differ diff --git a/doc/manual/es/images/ttrssapp2.png b/doc/manual/es/images/ttrssapp2.png new file mode 100644 index 000000000..6bcc762f8 Binary files /dev/null and b/doc/manual/es/images/ttrssapp2.png differ diff --git a/doc/manual/es/images/ttrssapp3.png b/doc/manual/es/images/ttrssapp3.png new file mode 100644 index 000000000..764bca9bc Binary files /dev/null and b/doc/manual/es/images/ttrssapp3.png differ diff --git a/doc/manual/es/images/ttrssapp4.png b/doc/manual/es/images/ttrssapp4.png new file mode 100644 index 000000000..d43743dac Binary files /dev/null and b/doc/manual/es/images/ttrssapp4.png differ diff --git a/doc/manual/es/images/ttrssapp5.png b/doc/manual/es/images/ttrssapp5.png new file mode 100644 index 000000000..f0be1a047 Binary files /dev/null and b/doc/manual/es/images/ttrssapp5.png differ diff --git a/doc/manual/es/images/ui_add_security_exception-es.png b/doc/manual/es/images/ui_add_security_exception-es.png new file mode 100644 index 000000000..63db86897 Binary files /dev/null and b/doc/manual/es/images/ui_add_security_exception-es.png differ diff --git a/doc/manual/es/images/ui_apps.png b/doc/manual/es/images/ui_apps.png new file mode 100644 index 000000000..061699d53 Binary files /dev/null and b/doc/manual/es/images/ui_apps.png differ diff --git a/doc/manual/es/images/ui_burger_icon-es.png b/doc/manual/es/images/ui_burger_icon-es.png new file mode 100644 index 000000000..dd55f3bc2 Binary files /dev/null and b/doc/manual/es/images/ui_burger_icon-es.png differ diff --git a/doc/manual/es/images/ui_burger_menu-es.png b/doc/manual/es/images/ui_burger_menu-es.png new file mode 100644 index 000000000..7f40b8263 Binary files /dev/null and b/doc/manual/es/images/ui_burger_menu-es.png differ diff --git a/doc/manual/es/images/ui_firstboot_account-es.png b/doc/manual/es/images/ui_firstboot_account-es.png new file mode 100644 index 000000000..a1a11296c Binary files /dev/null and b/doc/manual/es/images/ui_firstboot_account-es.png differ diff --git a/doc/manual/es/images/ui_firstboot_complete-es.png b/doc/manual/es/images/ui_firstboot_complete-es.png new file mode 100644 index 000000000..c0dc2d495 Binary files /dev/null and b/doc/manual/es/images/ui_firstboot_complete-es.png differ diff --git a/doc/manual/es/images/ui_firstboot_welcome-es.png b/doc/manual/es/images/ui_firstboot_welcome-es.png new file mode 100644 index 000000000..c5bf96056 Binary files /dev/null and b/doc/manual/es/images/ui_firstboot_welcome-es.png differ diff --git a/doc/manual/es/images/ui_frontpage.png b/doc/manual/es/images/ui_frontpage.png new file mode 100644 index 000000000..821880c36 Binary files /dev/null and b/doc/manual/es/images/ui_frontpage.png differ diff --git a/doc/manual/es/images/ui_frontpage_with_app.png b/doc/manual/es/images/ui_frontpage_with_app.png new file mode 100644 index 000000000..20e188f93 Binary files /dev/null and b/doc/manual/es/images/ui_frontpage_with_app.png differ diff --git a/doc/manual/es/images/ui_help-es.png b/doc/manual/es/images/ui_help-es.png new file mode 100644 index 000000000..b8db80cf7 Binary files /dev/null and b/doc/manual/es/images/ui_help-es.png differ diff --git a/doc/manual/es/images/ui_insecure_connection-es.png b/doc/manual/es/images/ui_insecure_connection-es.png new file mode 100644 index 000000000..b2b1cb904 Binary files /dev/null and b/doc/manual/es/images/ui_insecure_connection-es.png differ diff --git a/doc/manual/es/images/ui_system.png b/doc/manual/es/images/ui_system.png new file mode 100644 index 000000000..827cc1a34 Binary files /dev/null and b/doc/manual/es/images/ui_system.png differ diff --git a/doc/manual/es/images/ui_user_menu-es.png b/doc/manual/es/images/ui_user_menu-es.png new file mode 100644 index 000000000..231561b51 Binary files /dev/null and b/doc/manual/es/images/ui_user_menu-es.png differ diff --git a/doc/manual/es/images/upgrades.png b/doc/manual/es/images/upgrades.png new file mode 100644 index 000000000..73db78022 Binary files /dev/null and b/doc/manual/es/images/upgrades.png differ diff --git a/doc/manual/es/images/virtualbox.png b/doc/manual/es/images/virtualbox.png new file mode 100644 index 000000000..0eb98ece4 Binary files /dev/null and b/doc/manual/es/images/virtualbox.png differ diff --git a/doc/manual/es/images/virtualbox_console_after_boot.png b/doc/manual/es/images/virtualbox_console_after_boot.png new file mode 100644 index 000000000..f63bc6877 Binary files /dev/null and b/doc/manual/es/images/virtualbox_console_after_boot.png differ diff --git a/doc/manual/es/images/virtualbox_harddisk_file.png b/doc/manual/es/images/virtualbox_harddisk_file.png new file mode 100644 index 000000000..cbf197e18 Binary files /dev/null and b/doc/manual/es/images/virtualbox_harddisk_file.png differ diff --git a/doc/manual/es/images/virtualbox_network_type.png b/doc/manual/es/images/virtualbox_network_type.png new file mode 100644 index 000000000..6eb84c8e0 Binary files /dev/null and b/doc/manual/es/images/virtualbox_network_type.png differ diff --git a/doc/manual/es/images/virtualbox_os_type.png b/doc/manual/es/images/virtualbox_os_type.png new file mode 100644 index 000000000..f9f5a73fb Binary files /dev/null and b/doc/manual/es/images/virtualbox_os_type.png differ diff --git a/doc/manual/es/images/virtualbox_thumb.png b/doc/manual/es/images/virtualbox_thumb.png new file mode 100644 index 000000000..184517180 Binary files /dev/null and b/doc/manual/es/images/virtualbox_thumb.png differ diff --git a/doc/fetch-images.xslt b/doc/scripts/fetch-images.xslt similarity index 94% rename from doc/fetch-images.xslt rename to doc/scripts/fetch-images.xslt index 86a6b88d8..451c830b8 100644 --- a/doc/fetch-images.xslt +++ b/doc/scripts/fetch-images.xslt @@ -41,9 +41,9 @@ - - - + + + diff --git a/doc/fixes.xslt b/doc/scripts/fixes.xslt similarity index 89% rename from doc/fixes.xslt rename to doc/scripts/fixes.xslt index 360a0b595..603ba7a66 100644 --- a/doc/fixes.xslt +++ b/doc/scripts/fixes.xslt @@ -46,8 +46,15 @@ - - + + + + + + + diff --git a/doc/manual-page-fixes.xslt b/doc/scripts/manual-page-fixes.xslt similarity index 100% rename from doc/manual-page-fixes.xslt rename to doc/scripts/manual-page-fixes.xslt diff --git a/doc/post-processor b/doc/scripts/post-processor similarity index 98% rename from doc/post-processor rename to doc/scripts/post-processor index fba619fc2..942253ba6 100755 --- a/doc/post-processor +++ b/doc/scripts/post-processor @@ -44,7 +44,7 @@ def subcommand_fix_wiki_urls(arguments): with open(file_name, 'r') as xml_file: lines = xml_file.readlines() - pattern = 'FreedomBox/Manual/{0}/FreedomBox'.format(page_name) + 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: diff --git a/functional_tests/features/gitweb.feature b/functional_tests/features/gitweb.feature new file mode 100644 index 000000000..7802c91c3 --- /dev/null +++ b/functional_tests/features/gitweb.feature @@ -0,0 +1,107 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +@apps @gitweb @backups @sso +Feature: gitweb Simple Git Hosting + Git web interface. + +Background: + Given I'm a logged in user + And the gitweb application is installed + +Scenario: Enable gitweb application + Given the gitweb application is disabled + When I enable the gitweb application + Then the gitweb site should be available + +Scenario: Create public repository + Given the gitweb application is enabled + And a public repository that doesn't exist + When I create the repository + Then the repository should be listed as a public + And the repository should be listed on gitweb + +Scenario: Create private repository + Given the gitweb application is enabled + And a private repository that doesn't exist + When I create the 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 + +Scenario: Backup and restore gitweb + Given the gitweb application is enabled + And a repository + When I create a backup of the gitweb app data + And I delete the repository + And I restore the gitweb app data backup + Then the repository should be restored + And the gitweb site should be available + +Scenario: Disable gitweb application + Given the gitweb application is enabled + When I disable the gitweb application + Then the gitweb site should not be available + +Scenario: Public gitweb site shows only public repositories + Given the gitweb application is enabled + And both public and private repositories exist + When I log out + Then the public repository should be listed on gitweb + And the private repository should not be listed on gitweb + +Scenario: Gitweb is not public if there are only private repositories + Given the gitweb application is enabled + And at least one repository exists + And all repositories are private + When I log out + And I access gitweb application + Then I should be prompted for login + And gitweb app should not be visible on the front page + +Scenario: Edit repository metadata + Given the gitweb application is enabled + And a public repository that doesn't exist + And a repository metadata: + description: Test Description + owner: Test Owner + access: private + When I create the repository + And I set the metadata of the repository + Then the metadata of the repository should be as set + +Scenario: Access public repository with git client + Given the gitweb application is enabled + And a public repository + When using a git client + Then the repository should be publicly readable + And the repository should not be publicly writable + And the repository should be privately writable + +Scenario: Access private repository with git client + Given the gitweb application is enabled + And a private repository + When using a git client + Then the repository should not be publicly readable + And the repository should not be publicly writable + And the repository should be privately readable + And the repository should be privately writable diff --git a/functional_tests/step_definitions/application.py b/functional_tests/step_definitions/application.py index 41c1a81f9..b5cbc1457 100644 --- a/functional_tests/step_definitions/application.py +++ b/functional_tests/step_definitions/application.py @@ -456,3 +456,133 @@ def app_visible_on_front_page(browser, app_name): def app_not_visible_on_front_page(browser, app_name): shortcuts = application.find_on_front_page(browser, app_name) assert len(shortcuts) == 0 + + +@given('a public repository') +@given('a repository') +@given('at least one repository exists') +def gitweb_repo(browser): + application.gitweb_create_repo(browser, 'Test-repo', 'public', True) + + +@given('a private repository') +def gitweb_private_repo(browser): + application.gitweb_create_repo(browser, 'Test-repo', 'private', True) + + +@given('both public and private repositories exist') +def gitweb_public_and_private_repo(browser): + application.gitweb_create_repo(browser, 'Test-repo', 'public', True) + application.gitweb_create_repo(browser, 'Test-repo2', 'private', True) + + +@given(parsers.parse("a {access:w} repository that doesn't exist")) +def gitweb_nonexistent_repo(browser, access): + application.gitweb_delete_repo(browser, 'Test-repo', ignore_missing=True) + return dict(access=access) + + +@given('all repositories are private') +def gitweb_all_repositories_private(browser): + application.gitweb_set_all_repos_private(browser) + + +@given(parsers.parse('a repository metadata:\n{metadata}')) +def gitweb_repo_metadata(browser, metadata): + metadata_dict = {} + for item in metadata.split('\n'): + item = item.split(': ') + metadata_dict[item[0]] = item[1] + return metadata_dict + + +@when('I create the repository') +def gitweb_create_repo(browser, access): + application.gitweb_create_repo(browser, 'Test-repo', access) + + +@when('I delete the repository') +def gitweb_delete_repo(browser): + application.gitweb_delete_repo(browser, 'Test-repo') + + +@when('I set the metadata of the repository') +def gitweb_edit_repo_metadata(browser, gitweb_repo_metadata): + application.gitweb_edit_repo_metadata(browser, 'Test-repo', + gitweb_repo_metadata) + + +@when('using a git client') +def gitweb_using_git_client(): + pass + + +@then('the repository should be restored') +@then('the repository should be listed as a public') +def gitweb_repo_should_exists(browser): + assert application.gitweb_repo_exists(browser, 'Test-repo', + access='public') + + +@then('the repository should be listed as a private') +def gitweb_private_repo_should_exists(browser): + assert application.gitweb_repo_exists(browser, 'Test-repo', 'private') + + +@then('the repository should not be listed') +def gitweb_repo_should_not_exist(browser, gitweb_repo): + assert not application.gitweb_repo_exists(browser, gitweb_repo) + + +@then('the public repository should be listed on gitweb') +@then('the repository should be listed on gitweb') +def gitweb_repo_should_exist_on_gitweb(browser): + assert application.gitweb_site_repo_exists(browser, 'Test-repo') + + +@then('the private repository should not be listed on gitweb') +def gitweb_private_repo_should_exists_on_gitweb(browser): + assert not application.gitweb_site_repo_exists(browser, 'Test-repo2') + + +@then('the metadata of the repository should be as set') +def gitweb_repo_metadata_should_match(browser, gitweb_repo_metadata): + actual_metadata = application.gitweb_get_repo_metadata( + browser, 'Test-repo') + assert all(item in actual_metadata.items() + for item in gitweb_repo_metadata.items()) + + +@then('the repository should be publicly readable') +def gitweb_repo_publicly_readable(): + assert application.gitweb_repo_is_readable('Test-repo') + assert application.gitweb_repo_is_readable('Test-repo', + url_git_extension=True) + + +@then('the repository should not be publicly readable') +def gitweb_repo_not_publicly_readable(): + assert not application.gitweb_repo_is_readable('Test-repo') + assert not application.gitweb_repo_is_readable('Test-repo', + url_git_extension=True) + + +@then('the repository should not be publicly writable') +def gitweb_repo_not_publicly_writable(): + assert not application.gitweb_repo_is_writable('Test-repo') + assert not application.gitweb_repo_is_writable('Test-repo', + url_git_extension=True) + + +@then('the repository should be privately readable') +def gitweb_repo_privately_readable(): + assert application.gitweb_repo_is_readable('Test-repo', with_auth=True) + assert application.gitweb_repo_is_readable('Test-repo', with_auth=True, + url_git_extension=True) + + +@then('the repository should be privately writable') +def gitweb_repo_privately_writable(): + assert application.gitweb_repo_is_writable('Test-repo', with_auth=True) + assert application.gitweb_repo_is_writable('Test-repo', with_auth=True, + url_git_extension=True) diff --git a/functional_tests/support/application.py b/functional_tests/support/application.py index 76d9714bf..fca0f0ef0 100644 --- a/functional_tests/support/application.py +++ b/functional_tests/support/application.py @@ -15,6 +15,11 @@ # along with this program. If not, see . # +import contextlib +import os +import shutil +import subprocess +import tempfile from time import sleep import requests @@ -319,6 +324,175 @@ def ejabberd_has_contact(browser): return eventually(site.jsxc_has_contact, [browser]) +def gitweb_create_repo(browser, repo, access=None, ok_if_exists=False): + """Create repository.""" + if not gitweb_repo_exists(browser, repo, access): + gitweb_delete_repo(browser, repo, ignore_missing=True) + browser.find_link_by_href('/plinth/apps/gitweb/create/').first.click() + browser.find_by_id('id_gitweb-name').fill(repo) + if access == 'private': + browser.find_by_id('id_gitweb-is_private').check() + elif access == 'public': + browser.find_by_id('id_gitweb-is_private').uncheck() + submit(browser) + elif not ok_if_exists: + assert False, 'Repo already exists.' + + +def gitweb_delete_repo(browser, repo, ignore_missing=False): + """Delete repository.""" + interface.nav_to_module(browser, 'gitweb') + delete_link = browser.find_link_by_href( + '/plinth/apps/gitweb/{}/delete/'.format(repo)) + if delete_link or not ignore_missing: + delete_link.first.click() + submit(browser) + + +def gitweb_edit_repo_metadata(browser, repo, metadata): + """Set repository metadata.""" + interface.nav_to_module(browser, 'gitweb') + browser.find_link_by_href( + '/plinth/apps/gitweb/{}/edit/'.format(repo)).first.click() + if 'name' in metadata: + browser.find_by_id('id_gitweb-name').fill(metadata['name']) + if 'description' in metadata: + browser.find_by_id('id_gitweb-description').fill( + metadata['description']) + if 'owner' in metadata: + browser.find_by_id('id_gitweb-owner').fill(metadata['owner']) + if 'access' in metadata: + if metadata['access'] == 'private': + browser.find_by_id('id_gitweb-is_private').check() + else: + browser.find_by_id('id_gitweb-is_private').uncheck() + submit(browser) + + +def gitweb_get_repo_metadata(browser, repo): + """Get repository metadata.""" + interface.nav_to_module(browser, 'gitweb') + browser.find_link_by_href( + '/plinth/apps/gitweb/{}/edit/'.format(repo)).first.click() + metadata = {} + for item in ['name', 'description', 'owner']: + metadata[item] = browser.find_by_id('id_gitweb-' + item).value + if browser.find_by_id('id_gitweb-is_private').value: + metadata['access'] = 'private' + else: + metadata['access'] = 'public' + return metadata + + +def _gitweb_get_repo_url(repo, with_auth): + """"Get repository URL""" + scheme = 'http' + if default_url.startswith('https://'): + scheme = 'https' + url = default_url.split('://')[1] if '://' in default_url else default_url + password = 'gitweb_wrong_password' + if with_auth: + password = config['DEFAULT']['password'] + + return '{0}://{1}:{2}@{3}/gitweb/{4}'.format( + scheme, config['DEFAULT']['username'], password, url, repo) + + +@contextlib.contextmanager +def _gitweb_temp_directory(): + """Create temporary directory""" + name = tempfile.mkdtemp(prefix='plinth_test_gitweb_') + yield name + shutil.rmtree(name) + + +def _gitweb_git_command_is_successful(command, cwd): + """Check if a command runs successfully or gives authentication error""" + process = subprocess.run(command, capture_output=True, cwd=cwd) + if process.returncode != 0: + if 'Authentication failed' in process.stderr.decode(): + return False + print(process.stdout.decode()) + # raise exception + process.check_returncode() + return True + + +def gitweb_repo_exists(browser, repo, access=None): + """Check whether the repository exists.""" + interface.nav_to_module(browser, 'gitweb') + links_found = browser.find_link_by_href('/gitweb/{}.git'.format(repo)) + access_matches = True + if links_found and access: + parent = links_found.first.find_by_xpath('..').first + private_icon = parent.find_by_css('.repo-private-icon') + if access == 'private': + access_matches = True if private_icon else False + if access == 'public': + access_matches = True if not private_icon else False + return bool(links_found) and access_matches + + +def gitweb_repo_is_readable(repo, with_auth=False, url_git_extension=False): + """Check if a git repo is readable with git client.""" + url = _gitweb_get_repo_url(repo, with_auth) + if url_git_extension: + url = url + '.git' + git_command = ['git', 'clone', '-c', 'http.sslverify=false', url] + with _gitweb_temp_directory() as cwd: + return _gitweb_git_command_is_successful(git_command, cwd) + + +def gitweb_repo_is_writable(repo, with_auth=False, url_git_extension=False): + """Check if a git repo is writable with git client.""" + url = _gitweb_get_repo_url(repo, with_auth) + 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 commit -q --allow-empty --author "Tester <>" -m "test"' + ] + for command in prepare_git_repo_commands: + subprocess.run(command, shell=True, check=True, cwd=cwd) + git_push_command = ['git', 'push', '-qf', url, 'master'] + + return _gitweb_git_command_is_successful(git_push_command, cwd) + + +def gitweb_set_repo_access(browser, repo, access): + """Set repository as public or private.""" + interface.nav_to_module(browser, 'gitweb') + browser.find_link_by_href( + '/plinth/apps/gitweb/{}/edit/'.format(repo)).first.click() + if access == 'private': + browser.find_by_id('id_gitweb-is_private').check() + else: + browser.find_by_id('id_gitweb-is_private').uncheck() + submit(browser) + + +def gitweb_set_all_repos_private(browser): + """Set all repositories private""" + interface.nav_to_module(browser, 'gitweb') + public_repos = [] + for element in browser.find_by_css('#gitweb-repo-list .list-group-item'): + if not element.find_by_css('.repo-private-icon'): + repo = element.find_by_css('.repo-label').first.text + public_repos.append(repo) + for repo in public_repos: + gitweb_set_repo_access(browser, repo, 'private') + + +def gitweb_site_repo_exists(browser, repo): + """Check whether the repository exists on Gitweb site.""" + browser.visit('{}/gitweb'.format(default_url)) + return browser.find_by_css('a[href="/gitweb/{0}.git"]'.format(repo)) + + def ikiwiki_create_wiki_if_needed(browser): """Create wiki if it does not exist.""" interface.nav_to_module(browser, 'ikiwiki') diff --git a/functional_tests/support/system.py b/functional_tests/support/system.py index 6d3033366..72a71c3d5 100644 --- a/functional_tests/support/system.py +++ b/functional_tests/support/system.py @@ -43,23 +43,23 @@ config_page_title_language_map = { def get_hostname(browser): nav_to_module(browser, 'config') - return browser.find_by_id('id_configuration-hostname').value + return browser.find_by_id('id_hostname').value def set_hostname(browser, hostname): nav_to_module(browser, 'config') - browser.find_by_id('id_configuration-hostname').fill(hostname) + browser.find_by_id('id_hostname').fill(hostname) submit(browser) def get_domain_name(browser): nav_to_module(browser, 'config') - return browser.find_by_id('id_configuration-domainname').value + return browser.find_by_id('id_domainname').value def set_domain_name(browser, domain_name): nav_to_module(browser, 'config') - browser.find_by_id('id_configuration-domainname').fill(domain_name) + browser.find_by_id('id_domainname').fill(domain_name) submit(browser) @@ -68,7 +68,7 @@ def set_home_page(browser, home_page): home_page = 'shortcut-' + home_page nav_to_module(browser, 'config') - drop_down = browser.find_by_id('id_configuration-homepage') + drop_down = browser.find_by_id('id_homepage') drop_down.select(home_page) submit(browser) diff --git a/plinth/__init__.py b/plinth/__init__.py index b97511f8f..daca76b9d 100644 --- a/plinth/__init__.py +++ b/plinth/__init__.py @@ -18,4 +18,4 @@ Package init file. """ -__version__ = '19.19' +__version__ = '19.20' diff --git a/plinth/actions.py b/plinth/actions.py index 1c4aefd7d..94b4e4255 100644 --- a/plinth/actions.py +++ b/plinth/actions.py @@ -134,11 +134,16 @@ def _run(action, options=None, input=None, run_in_background=False, """Safely run a specific action as a normal user or root. Actions are pulled from the actions directory. + - options are added to the action command. + - input: data (as bytes) that will be sent to the action command's stdin. + - run_in_background: run asynchronously or wait for the command to complete. + - run_as_root: execute the command through sudo. + """ if options is None: options = [] diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po index 278dca0cd..a9d39c717 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2019-10-12 14:52+0000\n" "Last-Translator: Nevena Mircheva \n" "Language-Team: Bulgarian any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -679,57 +686,43 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -743,8 +736,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -970,7 +963,7 @@ msgstr "" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "" @@ -1172,7 +1165,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1432,39 +1425,40 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -msgid "Name of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -msgid "Repository's owner name" -msgstr "" - -#: plinth/modules/gitweb/forms.py:48 -msgid "Private repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +msgid "Name of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "" + +#: plinth/modules/gitweb/forms.py:63 +msgid "Private repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1537,44 +1531,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1678,6 +1672,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -1892,7 +1894,7 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1969,19 +1971,19 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2062,7 +2064,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "" @@ -3021,7 +3023,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -4414,6 +4416,17 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +msgid "Disable password authentication" +msgstr "" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" msgstr "" @@ -4432,6 +4445,14 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4440,7 +4461,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4529,27 +4550,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4557,9 +4578,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4571,32 +4592,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5519,11 +5540,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po index a901d50c0..d22b27fc3 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,6 +18,10 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -358,7 +362,6 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -400,7 +403,7 @@ msgstr "" msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -596,7 +599,11 @@ msgid "" "\"{users_url}\">any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -672,57 +679,43 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -736,8 +729,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -963,7 +956,7 @@ msgstr "" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "" @@ -1165,7 +1158,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1425,39 +1418,40 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -msgid "Name of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -msgid "Repository's owner name" -msgstr "" - -#: plinth/modules/gitweb/forms.py:48 -msgid "Private repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +msgid "Name of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "" + +#: plinth/modules/gitweb/forms.py:63 +msgid "Private repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1530,44 +1524,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1671,6 +1665,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -1885,7 +1887,7 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1962,19 +1964,19 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2055,7 +2057,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "" @@ -3014,7 +3016,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -4407,6 +4409,17 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +msgid "Disable password authentication" +msgstr "" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" msgstr "" @@ -4425,6 +4438,14 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4433,7 +4454,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4522,27 +4543,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4550,9 +4571,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4564,32 +4585,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5512,11 +5533,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po index d0a5aa63d..c572fb0a3 100644 --- a/plinth/locale/cs/LC_MESSAGES/django.po +++ b/plinth/locale/cs/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" -"PO-Revision-Date: 2019-10-09 20:58+0000\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" +"PO-Revision-Date: 2019-10-26 17:53+0000\n" "Last-Translator: Pavel Borecki \n" "Language-Team: Czech \n" @@ -17,7 +17,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 3.9-dev\n" +"X-Generator: Weblate 3.9.1-dev\n" + +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" #: plinth/action_utils.py:298 #, python-brace-format @@ -379,7 +383,6 @@ msgid "Delete Archive %(name)s" msgstr "Smazat archiv %(name)s" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -422,11 +425,19 @@ msgid "Restoring" msgstr "Obnovuje se" #: plinth/modules/backups/templates/backups_upload.html:32 -#, python-format +#, 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" +#| " " msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -647,7 +658,11 @@ msgstr "" "\"{users_url}\">uživatele s účtem na {box_name}, náležejícím do skupiny " "admin." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Obecná nastavení" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -739,57 +754,43 @@ msgstr "Zobrazit pokročilé aplikace a funkce" msgid "Show apps and features that require more technical knowledge." msgstr "Zobrazit aplikace a funkce, které vyžadují techničtější znalosti." -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "Zjistit více…" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Obecná nastavení" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Chyba při nastavování názvu stroje: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "Nastavení názvu stroje" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Chyba při nastavování doménového názvu: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "Nastavení doménového názvu" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Chyba při nastavování domovské stránky webového serveru: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "Nastavení domovské stránky webového serveru" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Chyba při změně pokročilého režimu: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "Jsou zobrazovány pokročilé aplikace a funkce" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "Jsou skryté pokročilé aplikace a funkce" @@ -802,9 +803,14 @@ msgid "File Sharing" msgstr "Sdílení souborů" #: plinth/modules/coquelicot/__init__.py:45 +#, 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 " +"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 " @@ -1063,7 +1069,7 @@ msgstr "Aktualizovat nastavení" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "Nastavení se nezměnila" @@ -1313,7 +1319,7 @@ msgstr "" msgid "Last update" msgstr "Minulá aktualizace" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "O systému" @@ -1581,11 +1587,11 @@ msgstr "Nastavení dokončeno" #: plinth/modules/gitweb/__init__.py:41 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" -msgstr "" +msgstr "Gitweb" #: plinth/modules/gitweb/__init__.py:43 msgid "Simple Git Hosting" -msgstr "" +msgstr "Jednoduché hostování Git" #: plinth/modules/gitweb/__init__.py:46 msgid "" @@ -1597,117 +1603,98 @@ msgid "" "available graphical clients. And you can share your code with people around " "the world." msgstr "" +"Git je distribuovaný systém pro správu verzí pro sledování změn ve zdrojovém " +"kódu při vývoji software. Gitweb poskytuje webové rozhraní pro Git " +"repozitáře. Je možné procházet historií a obsahem zdrojového kódu, " +"vyhledávat příslušné změny a kód. Je také možné repozitáře klonovat a " +"nahrávat změny v kódu pomocí Git klienta pro příkazový řádek nebo různých " +"grafických klientů. A svoje zdrojové kódy můžete sdílet s lidmi z celého " +"světa." #: plinth/modules/gitweb/__init__.py:53 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" +"Více o Git se dozvíte navštívením výuky Gitu." #: plinth/modules/gitweb/__init__.py:57 msgid "Read-write access to Git repositories" -msgstr "" - -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Name of the share" -msgid "Name of the repository" -msgstr "Název sdílení" - -#: plinth/modules/gitweb/forms.py:36 -#, fuzzy -#| msgid "" -#| "A lowercase alpha-numeric string that uniquely identifies a share. " -#| "Example: media." -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" -"Řetězec malými písmeny a číslicemi který jednoznačně identifikuje sdílení. " -"Příklad:média." +msgstr "Přístup do Git repozitářů pro čtení a zápis" +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -#, fuzzy -#| msgid "Create new repository" -msgid "Description of the repository" -msgstr "Vytvořit nový repozitář" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "Repository removed." -msgid "Repository's owner name" -msgstr "Repozitář odstraněn." - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Create Repository" -msgid "Private repository" -msgstr "Vytvořit repozitář" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy -#| msgid "Invalid hostname" msgid "Invalid repository name." -msgstr "Neplatný název stroje" +msgstr "Neplatný název repozitáře." -#: plinth/modules/gitweb/forms.py:71 -#, fuzzy -#| msgid "A share with this name already exists." +#: plinth/modules/gitweb/forms.py:47 +msgid "Name of the repository" +msgstr "Název repozitáře" + +#: plinth/modules/gitweb/forms.py:51 +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:55 +msgid "Description of the repository" +msgstr "Popis repozitáře" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "Volitelné, zobrazuje se na Gitweb" + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "Jméno vlastníka repozitáře" + +#: plinth/modules/gitweb/forms.py:63 +msgid "Private repository" +msgstr "Neveřejný repozitář" + +#: plinth/modules/gitweb/forms.py:64 +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:83 msgid "A repository with this name already exists." -msgstr "Sdílení s tímto názvem už existuje." +msgstr "Repozitář s tímto názvem už existuje." #: plinth/modules/gitweb/manifest.py:36 msgid "Git" -msgstr "" +msgstr "Git" #: plinth/modules/gitweb/templates/gitweb_configure.html:41 #: plinth/modules/gitweb/templates/gitweb_configure.html:43 -#, fuzzy -#| msgid "Create Repository" msgid "Create repository" msgstr "Vytvořit repozitář" #: plinth/modules/gitweb/templates/gitweb_configure.html:50 -#, fuzzy -#| msgid "Create Repository" msgid "Manage Repositories" -msgstr "Vytvořit repozitář" +msgstr "Spravovat repozitáře" #: plinth/modules/gitweb/templates/gitweb_configure.html:55 -#, fuzzy -#| msgid "Tor relay port available" msgid "No repositories available." -msgstr "Port Tor předávání k dispozici" +msgstr "Nejsou k dispozici žádné repozitáře." #: plinth/modules/gitweb/templates/gitweb_configure.html:63 -#, fuzzy, python-format -#| msgid "Delete user %(username)s" +#, python-format msgid "Delete repository %(repo.name)s" -msgstr "Smazat uživatele %(username)s" +msgstr "Smazat repozitář %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_configure.html:78 -#, fuzzy, python-format -#| msgid "Go to site %(site)s" +#, python-format msgid "Go to repository %(repo.name)s" -msgstr "Přejít na stránku %(site)s" +msgstr "Přejít do repozitáře %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#, fuzzy, python-format -#| msgid "Delete Wiki or Blog %(name)s" +#, python-format msgid "Delete Git Repository %(name)s" -msgstr "Smazat wiki nebo blog %(name)s" +msgstr "Smazat Git repozitář %(name)s" #: plinth/modules/gitweb/templates/gitweb_delete.html:33 -#, fuzzy -#| msgid "Delete this snapshot permanently?" msgid "Delete this repository permanently?" -msgstr "Nevratně smazat tento zachycený stav?" +msgstr "Nevratně smazat tento repozitář?" #: plinth/modules/gitweb/templates/gitweb_delete.html:42 #: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:44 @@ -1716,22 +1703,16 @@ msgid "Delete %(name)s" msgstr "Smazat %(name)s" #: plinth/modules/gitweb/views.py:62 -#, fuzzy -#| msgid "Repository removed." msgid "Repository created." -msgstr "Repozitář odstraněn." +msgstr "Repozitář vytvořen." #: plinth/modules/gitweb/views.py:93 -#, fuzzy -#| msgid "Repository removed." msgid "Repository edited." -msgstr "Repozitář odstraněn." +msgstr "Repozitář upraven." #: plinth/modules/gitweb/views.py:98 -#, fuzzy -#| msgid "Create Repository" msgid "Edit repository" -msgstr "Vytvořit repozitář" +msgstr "Upravit repozitář" #: plinth/modules/gitweb/views.py:126 plinth/modules/searx/views.py:62 #: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:170 @@ -1748,44 +1729,44 @@ msgstr "{name} smazáno." msgid "Could not delete {name}: {error}" msgstr "{name} se nepodařilo smazat: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "Dokumentace" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Příručka" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "Získat podporu" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "Odeslat zpětnou vazbu" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "Zapojit se" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "Dokumentace a často kladené dotazy" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "O {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "Příručka k {box_name}" @@ -1916,6 +1897,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "Zjistit více…" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -1938,6 +1927,11 @@ msgid "" "a> to let our developers know. To report, first check if the issue is " "already reported and then use the \"New issue\" button." msgstr "" +"Pokud naleznete chybu nebo problém, dejte o tom vědět vývojářům " +"prostřednictvím systému pro správu hlášení problémů. Pro " +"nahlášení, nejprve zkontrolujte, zda problém už nebyl nahlášen někým jiným a " +"pak použijte tlačítko „Nový problém“." #: plinth/modules/help/templates/help_feedback.html:51 msgid "Thank you!" @@ -2003,12 +1997,16 @@ msgid "" "using %(box_name)s, you can ask for help from our community of users and " "contributors." msgstr "" +"Pokud potřebujete s něčím poradit nebo se potýkáte s problémy při používání " +"%(box_name)s, můžete se obrátit na naši komunitu uživatelů a přispěvatelů." #: plinth/modules/help/templates/help_support.html:35 msgid "" "Search for past discussions or post a new query on our discussion forum." msgstr "" +"Hledejte v předchozích diskuzích nebo napište nový dotaz na našem diskuzním fóru." #: plinth/modules/help/templates/help_support.html:42 msgid "" @@ -2174,7 +2172,7 @@ msgstr "Zobrazit a upravit wiki aplikace" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Typ" @@ -2244,31 +2242,29 @@ msgid "Could not create blog: {error}" msgstr "Blog se nepodařilo vytvořit: {error}" #: plinth/modules/ikiwiki/views.py:127 -#, fuzzy, python-brace-format -#| msgid "{name} deleted." +#, python-brace-format msgid "{title} deleted." -msgstr "{name} smazáno." +msgstr "{title} dsmazáno." #: plinth/modules/ikiwiki/views.py:131 -#, fuzzy, python-brace-format -#| msgid "Could not delete {name}: {error}" +#, python-brace-format msgid "Could not delete {title}: {error}" -msgstr "{name} se nepodařilo smazat: {error}" +msgstr "{title} se nepodařilo smazat: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "Gobby server" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted je server pro Gobby – textový editor pro spolupráci ve skupině." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2365,7 +2361,7 @@ msgid "Website Security" msgstr "Zabezpečení webové stránky" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Akce" @@ -3058,6 +3054,8 @@ msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" +"Nastavit síťová zařízení. Připojit k Internetu přes ethernet, WiFi nebo " +"PPPoE. Sdílet toto připojení s ostatními zařízeními na síti." #: plinth/modules/networks/__init__.py:41 msgid "" @@ -3452,7 +3450,7 @@ msgid "yes" msgstr "ano" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Zařízení" @@ -4216,10 +4214,8 @@ msgstr "" "quasseldroid.iskrembilen.com/\">mobilních zařízení." #: plinth/modules/quassel/forms.py:38 -#, fuzzy -#| msgid "Subdomain" msgid "TLS domain" -msgstr "Podřízená doména" +msgstr "TLS doména" #: plinth/modules/quassel/forms.py:40 msgid "" @@ -5070,11 +5066,22 @@ msgstr "" "spojení provádět úkoly správy, kopírovat soubory nebo spouštět ostatní " "služby." -#: plinth/modules/ssh/templates/ssh.html:26 +#: plinth/modules/ssh/forms.py:30 #, fuzzy -#| msgid "SSH Fingerprint" +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "Použít základní HTTP ověřování" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + +#: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" -msgstr "SSH otisk" +msgstr "Otisky serveru" #: plinth/modules/ssh/templates/ssh.html:29 msgid "" @@ -5084,13 +5091,21 @@ msgstr "" #: plinth/modules/ssh/templates/ssh.html:38 msgid "Algorithm" -msgstr "" +msgstr "Algoritmus" #: plinth/modules/ssh/templates/ssh.html:39 -#, fuzzy -#| msgid "SSH Fingerprint" msgid "Fingerprint" -msgstr "SSH otisk" +msgstr "Otisk (fingerprint)" + +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "SSH authentication with password enabled." +msgstr "Ověření vůči vzdálenému serveru se nezdařilo." #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" @@ -5100,7 +5115,7 @@ msgstr "Sdružené přihlášení (SSO)" msgid "Login" msgstr "Přihlášení" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "Úložiště" @@ -5192,27 +5207,27 @@ msgstr "Není umožněno použít požadovanou volbu." msgid "The device is mounted by another user." msgstr "Zařízení je připojeno jiným uživatelem." -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "Jsou používána následující úložná zařízení:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "Štítek" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "Přípojný bod" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Použito" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Zvětšení oddílu" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5223,9 +5238,9 @@ msgstr "" "Kořenový oddíl je možné zvětšit a místo tak využít. Poskytne vám to další " "prostor pro ukládání vašich souborů." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "Zvětšit kořenový oddíl" @@ -5239,16 +5254,16 @@ msgstr "" "Než budete pokračovat, zazálohujte svá data. Po provedení této operace na " "kořenovém oddílu bude k dispozici %(expandable_root_size)s dalšího prostoru." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "Chyba při zvětšování oddílu: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "Oddíl úspěšně zvětšen." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " @@ -5257,16 +5272,16 @@ msgstr "" "Varování: Dochází volné místo na systémovém oddílu ({percent_used}% využito, " "{free_space} volné)." -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "{drive_vendor} {drive_model} je možné bezpečně odebrat." -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "Zařízení je možné bezpečně odebrat." -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "Chyba při vysouvání zařízení: {error_message}" @@ -6304,11 +6319,11 @@ msgstr "Instalace %(package_names)s: %(status)s" msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% dokončeno" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "Aplikace zapnuta" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "Aplikace vypnuta" diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po index 885516d59..6469fa5cc 100644 --- a/plinth/locale/da/LC_MESSAGES/django.po +++ b/plinth/locale/da/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2016-07-03 21:44+0000\n" "Last-Translator: Mikkel Kirkgaard Nielsen \n" "Language-Team: Danish /tt-rss på webserveren." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Generel Konfiguration" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -773,61 +780,45 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -#, fuzzy -#| msgid "Learn more »" -msgid "Learn more..." -msgstr "Lær mere »" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Generel Konfiguration" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Kunne ikke sætte værtsnavn: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "Værtsnavn gemt" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Kunne ikke sætte domænenavn: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "Domænenavn gemt" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "Kunne ikke sætte værtsnavn: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "Kunne ikke sætte domænenavn: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -843,8 +834,8 @@ msgstr "Aktiver Shaarli" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -1097,7 +1088,7 @@ msgstr "Opdater indstillinger" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "Indstilling uændret" @@ -1350,7 +1341,7 @@ msgstr "" msgid "Last update" msgstr "Seneste opdatering" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Om" @@ -1642,47 +1633,48 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Create User" -msgid "Name of the repository" -msgstr "Opret Bruger" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "packages not found" -msgid "Repository's owner name" -msgstr "pakker ikke fundet" - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Create User" -msgid "Private repository" -msgstr "Opret Bruger" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "Ugyldigt værtsnavn" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +#, fuzzy +#| msgid "Create User" +msgid "Name of the repository" +msgstr "Opret Bruger" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +#, fuzzy +#| msgid "packages not found" +msgid "Repository's owner name" +msgstr "pakker ikke fundet" + +#: plinth/modules/gitweb/forms.py:63 +#, fuzzy +#| msgid "Create User" +msgid "Private repository" +msgstr "Opret Bruger" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "This service already exists" msgid "A repository with this name already exists." @@ -1774,44 +1766,44 @@ msgstr "{name} slettet." msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Brugermanual" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "Dokumentation og OSS" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "Om {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Brugervejledning" @@ -1938,6 +1930,16 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +#, fuzzy +#| msgid "Learn more »" +msgid "Learn more..." +msgstr "Lær mere »" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2203,7 +2205,7 @@ msgstr "Tjenester og Applikationer" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Type" @@ -2284,21 +2286,21 @@ msgstr "{name} slettet." msgid "Could not delete {title}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" msgstr "Webserver" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2408,7 +2410,7 @@ msgid "Website Security" msgstr "Webside-sikkerhed" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Handlinger" @@ -3516,7 +3518,7 @@ msgid "yes" msgstr "ja" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Enhed" @@ -5159,6 +5161,19 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "Brug basal (\"basic\") HTTP-autentifikation" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "SSH Fingerprint" @@ -5181,6 +5196,14 @@ msgstr "" msgid "Fingerprint" msgstr "SSH-fingeraftryk" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -5189,7 +5212,7 @@ msgstr "" msgid "Login" msgstr "Log ind" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 #, fuzzy #| msgid "reStore" msgid "Storage" @@ -5291,29 +5314,29 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" msgid "The following storage devices are in use:" msgstr "Følgende diske er i brug:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "Monteringspunkt" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Brugt" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5324,9 +5347,9 @@ msgstr "" "Rod-partitionen kan udvides til også at inkludere denne plads. Dette vil " "give dig yderligere fri plads til at gemme filer i." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "Udvid Rod-partition" @@ -5341,32 +5364,32 @@ msgstr "" "Efter denne operation, vil der være yderligere %(expandable_root_size)s fri " "diskplads på din rod-partition." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "Kunne ikke udvidde partition: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "Partition blev udviddet." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -6414,11 +6437,11 @@ msgstr "Installerer %(package_names)s: %(status)s" msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% færdig" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "Applikation aktiveret" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "Applikation deaktiveret" diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index e840f30ad..2f9964327 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" -"PO-Revision-Date: 2019-10-21 00:52+0000\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" +"PO-Revision-Date: 2019-10-25 17:27+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: German \n" @@ -21,6 +21,10 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.9.1-dev\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -382,7 +386,6 @@ msgid "Delete Archive %(name)s" msgstr "Archiv %(name)s löschen" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -426,11 +429,19 @@ msgid "Restoring" msgstr "Wiederherstellen" #: plinth/modules/backups/templates/backups_upload.html:32 -#, python-format +#, 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" +#| " " msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -658,7 +669,11 @@ msgstr "" "\">/_cockpit/ zur Verfügung. Zugriff hat jeder " "Benutzer auf {box_name}, der zur Gruppe der Administratoren gehört." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Allgemeine Konfiguration" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -750,57 +765,43 @@ msgid "Show apps and features that require more technical knowledge." msgstr "" "Anwendungen und Funktionen, die mehr technisches Wissen erfordern, anzeigen." -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "Mehr erfahren …" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Allgemeine Konfiguration" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Fehler beim Setzen des Hostnamens: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "Hostname gesetzt" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Fehler beim Setzen des Domainnamens: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "Domainname gesetzt" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Fehler beim Setzen der Webserver-Startseite: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "Webserver-Startseite wurde definiert" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Fehler beim Ändern des erweiterten Modus: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "Zeige erweiterte Anwendungen und Funktionen an" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "Ausblenden von erweiterten Apps und Funktionen" @@ -813,9 +814,14 @@ msgid "File Sharing" msgstr "Filesharing/Dateien teilen" #: plinth/modules/coquelicot/__init__.py:45 +#, 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 " +"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 Ein-Klick-Webanwendung zum Filesharing/Dateien-teilen, " @@ -1071,7 +1077,7 @@ msgstr "Update-Einstellungen" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "Einstellung unverändert" @@ -1322,7 +1328,7 @@ msgstr "" msgid "Last update" msgstr "Letztes Update" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Über" @@ -1595,11 +1601,11 @@ msgstr "Installation abgeschlossen" #: plinth/modules/gitweb/__init__.py:41 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" -msgstr "" +msgstr "Gitweb" #: plinth/modules/gitweb/__init__.py:43 msgid "Simple Git Hosting" -msgstr "" +msgstr "Einfaches Git Hosting" #: plinth/modules/gitweb/__init__.py:46 msgid "" @@ -1611,117 +1617,101 @@ msgid "" "available graphical clients. And you can share your code with people around " "the world." msgstr "" +"Git ist ein verteiltes Versionskontrollsystem zur Verfolgung von Änderungen " +"im Quellcode während der Softwareentwicklung. Gitweb bietet ein Webinterface " +"für Git-Repositories. Sie können den Verlauf und den Inhalt des Quellcodes " +"durchsuchen und mithilfe der Suche nach relevanten Commits (Bestätigende " +"Freischaltung einer oder mehrerer Änderungen innerhalb des Projekts) und " +"Code suchen. Sie können auch Repositorys klonen und Codeänderungen mit einem " +"Git-Befehlszeilenclient oder mit mehreren verfügbaren Grafikclients " +"hochladen. Und Sie können Ihren Code mit Menschen auf der ganzen Welt teilen." #: plinth/modules/gitweb/__init__.py:53 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" +"Um weiter über Git Betrieb zu lernen, schauen Sie sich die Gitanleitung an." #: plinth/modules/gitweb/__init__.py:57 msgid "Read-write access to Git repositories" -msgstr "" +msgstr "Lese- und Schreibberechtigung auf Git respositories" -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Name of the share" +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 +#: plinth/modules/gitweb/forms.py:40 +msgid "Invalid repository name." +msgstr "Ungültiger Archivname" + +#: plinth/modules/gitweb/forms.py:47 msgid "Name of the repository" -msgstr "Name der Freigabe" +msgstr "Name des resositorys" -#: plinth/modules/gitweb/forms.py:36 -#, fuzzy -#| msgid "" -#| "A lowercase alpha-numeric string that uniquely identifies a share. " -#| "Example: media." +#: plinth/modules/gitweb/forms.py:51 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" -"Eine alphanumerische Zeichenfolge in Kleinbuchstaben, die eine Freigabe " +"Eine alphanumerische Zeichenfolge in Kleinbuchstaben, die ein Resposity " "eindeutig identifiziert. Beispiel: media." -#: plinth/modules/gitweb/forms.py:40 -#, fuzzy -#| msgid "Create new repository" +#: plinth/modules/gitweb/forms.py:55 msgid "Description of the repository" -msgstr "Neues Archiv anlegen" +msgstr "Beschreibung des Archivs" -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 msgid "Optional, for displaying on Gitweb." -msgstr "" +msgstr "Optional, zur Anzeige auf Gitweb." -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "Repository removed." +#: plinth/modules/gitweb/forms.py:59 msgid "Repository's owner name" -msgstr "Archiv gelöscht." +msgstr "Name des Resposity Besitzers" -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Create Repository" +#: plinth/modules/gitweb/forms.py:63 msgid "Private repository" -msgstr "Archiv anlegen" +msgstr "Privates Archiv" -#: plinth/modules/gitweb/forms.py:49 +#: plinth/modules/gitweb/forms.py:64 msgid "Allow only authorized users to access this repository." -msgstr "" +msgstr "Zugriff auf diesem Repository nur bevollmächtigte Benutzer erlauben." -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy -#| msgid "Invalid hostname" -msgid "Invalid repository name." -msgstr "Ungültiger Hostname" - -#: plinth/modules/gitweb/forms.py:71 -#, fuzzy -#| msgid "A share with this name already exists." +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." -msgstr "Eine Freigabe mit diesem Namen existiert bereits." +msgstr "Eine Resposity mit diesem Namen existiert bereits." #: plinth/modules/gitweb/manifest.py:36 msgid "Git" -msgstr "" +msgstr "Git" #: plinth/modules/gitweb/templates/gitweb_configure.html:41 #: plinth/modules/gitweb/templates/gitweb_configure.html:43 -#, fuzzy -#| msgid "Create Repository" msgid "Create repository" -msgstr "Archiv anlegen" +msgstr "Respository anlegen" #: plinth/modules/gitweb/templates/gitweb_configure.html:50 -#, fuzzy -#| msgid "Create Repository" msgid "Manage Repositories" -msgstr "Archiv anlegen" +msgstr "Archive verwalten" #: plinth/modules/gitweb/templates/gitweb_configure.html:55 -#, fuzzy -#| msgid "Tor relay port available" msgid "No repositories available." -msgstr "Tor-Relay-Port ist verfügbar" +msgstr "Keine Archive verfügbar." #: plinth/modules/gitweb/templates/gitweb_configure.html:63 -#, fuzzy, python-format -#| msgid "Delete user %(username)s" +#, python-format msgid "Delete repository %(repo.name)s" -msgstr "Benutzer %(username)s löschen" +msgstr "Archiv %(repo.name)s löschen" #: plinth/modules/gitweb/templates/gitweb_configure.html:78 -#, fuzzy, python-format -#| msgid "Go to site %(site)s" +#, python-format msgid "Go to repository %(repo.name)s" -msgstr "Gehe zu Seite %(site)s" +msgstr "Gehe zum Archiv %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#, fuzzy, python-format -#| msgid "Delete Wiki or Blog %(name)s" +#, python-format msgid "Delete Git Repository %(name)s" -msgstr "Wiki oder Blog %(name)s löschen" +msgstr "Git Repository %(name)s löschen" #: plinth/modules/gitweb/templates/gitweb_delete.html:33 -#, fuzzy -#| msgid "Delete this snapshot permanently?" msgid "Delete this repository permanently?" -msgstr "Speicherauszug permanent löschen?" +msgstr "Dieses respository permanent löschen?" #: plinth/modules/gitweb/templates/gitweb_delete.html:42 #: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:44 @@ -1730,22 +1720,16 @@ msgid "Delete %(name)s" msgstr "%(name)s löschen" #: plinth/modules/gitweb/views.py:62 -#, fuzzy -#| msgid "Repository removed." msgid "Repository created." -msgstr "Archiv gelöscht." +msgstr "Archiv erstellt." #: plinth/modules/gitweb/views.py:93 -#, fuzzy -#| msgid "Repository removed." msgid "Repository edited." -msgstr "Archiv gelöscht." +msgstr "Archiv bearbeitet." #: plinth/modules/gitweb/views.py:98 -#, fuzzy -#| msgid "Create Repository" msgid "Edit repository" -msgstr "Archiv anlegen" +msgstr "Archiv bearbeiten" #: plinth/modules/gitweb/views.py:126 plinth/modules/searx/views.py:62 #: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:170 @@ -1762,44 +1746,44 @@ msgstr "{name} gelöscht." msgid "Could not delete {name}: {error}" msgstr "{name} konnte nicht gelöscht werden: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Handbuch" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "Unterstützung erhalten" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "Feedback abgeben" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "Mitwirken" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "Dokumentation und FAQ" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "Über Ihre FreedomBox {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name}-Handbuch" @@ -1942,6 +1926,14 @@ msgstr "" "pflegt Partnerschaften und setzt sich weltweit für die FreedomBox ein. Die " "FreedomBox Foundation würde ohne ihre Unterstützer nicht existieren." +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "Mehr erfahren …" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2218,7 +2210,7 @@ msgstr "Wiki-Anwendungen ansehen und bearbeiten" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Typ" @@ -2288,30 +2280,28 @@ msgid "Could not create blog: {error}" msgstr "Blog konnte nicht angelegt werden: {error}" #: plinth/modules/ikiwiki/views.py:127 -#, fuzzy, python-brace-format -#| msgid "{name} deleted." +#, python-brace-format msgid "{title} deleted." -msgstr "{name} gelöscht." +msgstr "{title} gelöscht." #: plinth/modules/ikiwiki/views.py:131 -#, fuzzy, python-brace-format -#| msgid "Could not delete {name}: {error}" +#, python-brace-format msgid "Could not delete {title}: {error}" -msgstr "{name} konnte nicht gelöscht werden: {error}" +msgstr "{title} konnte nicht gelöscht werden: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "Gobby-Server" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted ist ein Server für Gobby, den kollaborativen Text-Editor." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2412,7 +2402,7 @@ msgid "Website Security" msgstr "Webseiten-Sicherheit" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Aktionen" @@ -3519,7 +3509,7 @@ msgid "yes" msgstr "ja" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Gerät" @@ -4296,16 +4286,16 @@ msgstr "" "iskrembilen.com/\">mobile Telefone zur Verfügung." #: plinth/modules/quassel/forms.py:38 -#, fuzzy -#| msgid "Subdomain" msgid "TLS domain" -msgstr "Subdomain" +msgstr "TLS Domain" #: plinth/modules/quassel/forms.py:40 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." msgstr "" +"Wähle eine Domain zur Nutzung mit TLS. Wenn diese Liste leer ist, " +"konfigurieren Sie bitte mindestens eine Domain mit Zertifikaten." #: plinth/modules/quassel/manifest.py:49 msgid "Quasseldroid" @@ -5161,27 +5151,49 @@ msgstr "" "verifizierter, entfernter Computer Verwaltungsaufgaben ausführen, Dateien " "kopieren oder andere Anwendungen starten." -#: plinth/modules/ssh/templates/ssh.html:26 +#: plinth/modules/ssh/forms.py:30 #, fuzzy -#| msgid "SSH Fingerprint" +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "HTTP-Basisauthentifizierung verwenden" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + +#: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" -msgstr "SSH-Fingerabdruck" +msgstr "Server Fingerabdrücke" #: plinth/modules/ssh/templates/ssh.html:29 msgid "" "When connecting to the server, ensure that the fingerprint shown by the SSH " "client matches one of these fingerprints." msgstr "" +"Wenn Sie sich mit einem Server verbinden, stellen Sie bitte sicher, dass der " +"vom SSH-Client angezeigte Fingerabdruck mit einem dieser Fingerabdrücke " +"übereinstimmt." #: plinth/modules/ssh/templates/ssh.html:38 msgid "Algorithm" -msgstr "" +msgstr "Algorithmus" #: plinth/modules/ssh/templates/ssh.html:39 -#, fuzzy -#| msgid "SSH Fingerprint" msgid "Fingerprint" -msgstr "SSH-Fingerabdruck" +msgstr "Fingerabdruck" + +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "SSH authentication with password enabled." +msgstr "Authentifizierung am Server fehlgeschlagen." #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" @@ -5191,7 +5203,7 @@ msgstr "Einmal-Anmeldung" msgid "Login" msgstr "Anmelden" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "Speicher" @@ -5287,27 +5299,27 @@ msgstr "Die gewünschte Option ist nicht gestattet." msgid "The device is mounted by another user." msgstr "Das Gerät ist von einem anderen Benutzer eingebunden." -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "Die folgenden Speichermedien werden verwendet:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "Bezeichnung" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "Einhängepunkt" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Genutzt" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Partitions-Erweiterung" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5319,9 +5331,9 @@ msgstr "" "Speicherplatz zu nutzen. Die Erweiterung stellt mehr Speicherplatz für Ihre " "Dateien bereit." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "Erweitern der Root-Partition" @@ -5336,16 +5348,16 @@ msgstr "" "Nach dieser Aktion werden %(expandable_root_size)s zusätzlicher " "Speicherplatz auf der Root-Partition verfügbar." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "Fehler beim Erweitern des Dateisystems: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "Partition erfolgreich vergrößert." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " @@ -5354,16 +5366,16 @@ msgstr "" "Warnung: Geringer Speicherplatz auf der Systempartition ({percent_used}% " "belegt, {free_space} verfügbar)." -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "{drive_vendor} {drive_model} kann sicher entfernt werden." -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "Gerät kann sicher entfernt werden." -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "Fehler beim Auswerfen des Geräts: {error_message}" @@ -6425,11 +6437,11 @@ msgstr "%(package_names)s wird installiert: %(status)s" msgid "%(percentage)s%% complete" msgstr "%(percentage)s %% abgeschlossen" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "Anwendung aktiviert" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "Anwendung deaktiviert" diff --git a/plinth/locale/django.pot b/plinth/locale/django.pot index 36a7ecc8f..b6d8b9fbc 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,6 +17,10 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -357,7 +361,6 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -399,7 +402,7 @@ msgstr "" msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -595,7 +598,11 @@ msgid "" "\"{users_url}\">any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -671,57 +678,43 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -735,8 +728,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -962,7 +955,7 @@ msgstr "" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "" @@ -1164,7 +1157,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1424,39 +1417,40 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -msgid "Name of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -msgid "Repository's owner name" -msgstr "" - -#: plinth/modules/gitweb/forms.py:48 -msgid "Private repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +msgid "Name of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "" + +#: plinth/modules/gitweb/forms.py:63 +msgid "Private repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1529,44 +1523,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1670,6 +1664,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -1884,7 +1886,7 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1961,19 +1963,19 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2054,7 +2056,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "" @@ -3013,7 +3015,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -4406,6 +4408,17 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +msgid "Disable password authentication" +msgstr "" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" msgstr "" @@ -4424,6 +4437,14 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4432,7 +4453,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4521,27 +4542,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4549,9 +4570,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4563,32 +4584,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5511,11 +5532,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 4769bffd8..4b26cf02a 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -16,6 +16,10 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -356,7 +360,6 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -398,7 +401,7 @@ msgstr "" msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -594,7 +597,11 @@ msgid "" "\"{users_url}\">any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -670,57 +677,43 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -734,8 +727,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -961,7 +954,7 @@ msgstr "" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "" @@ -1163,7 +1156,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1423,39 +1416,40 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -msgid "Name of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -msgid "Repository's owner name" -msgstr "" - -#: plinth/modules/gitweb/forms.py:48 -msgid "Private repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +msgid "Name of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "" + +#: plinth/modules/gitweb/forms.py:63 +msgid "Private repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1528,44 +1522,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1669,6 +1663,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -1883,7 +1885,7 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1960,19 +1962,19 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2053,7 +2055,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "" @@ -3012,7 +3014,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -4405,6 +4407,17 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +msgid "Disable password authentication" +msgstr "" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" msgstr "" @@ -4423,6 +4436,14 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4431,7 +4452,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4520,27 +4541,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4548,9 +4569,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4562,32 +4583,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5510,11 +5531,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po index 9d2256177..8ea17e39b 100644 --- a/plinth/locale/es/LC_MESSAGES/django.po +++ b/plinth/locale/es/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" -"PO-Revision-Date: 2019-09-29 07:55+0000\n" -"Last-Translator: Luis A. Arizmendi \n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" +"PO-Revision-Date: 2019-10-26 17:53+0000\n" +"Last-Translator: Fioddor Superconcentrado \n" "Language-Team: Spanish \n" "Language: es\n" @@ -17,7 +17,11 @@ msgstr "" "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.9-dev\n" +"X-Generator: Weblate 3.9.1-dev\n" + +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" #: plinth/action_utils.py:298 #, python-brace-format @@ -384,7 +388,6 @@ msgid "Delete Archive %(name)s" msgstr "Eliminar el archivo %(name)s" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -428,11 +431,19 @@ msgid "Restoring" msgstr "Restaurar" #: plinth/modules/backups/templates/backups_upload.html:32 -#, python-format +#, 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" +#| " " msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -656,7 +667,11 @@ msgstr "" "\"{users_url}\">cualquier usuario en {box_name} que pertenezca al grupo " "«admin»." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Configuración general" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -750,57 +765,43 @@ msgid "Show apps and features that require more technical knowledge." msgstr "" "Muestra aplicaciones y funciones que requieren mayor conocimiento técnico." -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "Aprenda más..." - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Configuración general" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Error al definir el nombre de anfitrión: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "Asignar nombre de anfitrión" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Error al establecer nombre de dominio: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "Asignar nombre de dominio" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Error al configurar la página de inicio del servidor web: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "Página de inicio del servidor web configurada" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Error al cambiar al modo avanzado: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "Mostrando aplicaciones y funciones avanzadas" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "Ocultando aplicaciones y funciones avanzadas" @@ -813,9 +814,14 @@ msgid "File Sharing" msgstr "Compartir archivos" #: plinth/modules/coquelicot/__init__.py:45 +#, 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 " +"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\", " @@ -1072,7 +1078,7 @@ msgstr "Actualizar configuración" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "Configuración sin cambio" @@ -1319,7 +1325,7 @@ msgstr "" msgid "Last update" msgstr "Última actualización" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Acerca de" @@ -1587,11 +1593,11 @@ msgstr "Configuración completada" #: plinth/modules/gitweb/__init__.py:41 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" -msgstr "" +msgstr "Gitweb" #: plinth/modules/gitweb/__init__.py:43 msgid "Simple Git Hosting" -msgstr "" +msgstr "Alojamiento simple para Git" #: plinth/modules/gitweb/__init__.py:46 msgid "" @@ -1603,117 +1609,98 @@ msgid "" "available graphical clients. And you can share your code with people around " "the world." msgstr "" +"Git es un sistema se control de versiones distribuído para controlar los " +"cambios en el código fuente durante el desarrollo de software. Gitweb " +"proporciona un interfaz web a repositorios Git. Puedes hojear su historia y " +"navegar por el código fuente, y buscar cambios y código relevantes. También " +"puedes clonar repositorios y subir modificaciones de código mediante un " +"cliente Git de línea de comandos o múltiples clientes gráficos. Y puedes " +"compartir tu código con gente de todo el mundo." #: plinth/modules/gitweb/__init__.py:53 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" +"Para aprender más acerca de cómo usar Git visita el tutorial de Git." #: plinth/modules/gitweb/__init__.py:57 msgid "Read-write access to Git repositories" -msgstr "" - -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Name of the share" -msgid "Name of the repository" -msgstr "Nombre de la compartición" - -#: plinth/modules/gitweb/forms.py:36 -#, fuzzy -#| msgid "" -#| "A lowercase alpha-numeric string that uniquely identifies a share. " -#| "Example: media." -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" -"Una cadena alfa-numérica en minúsculas que identifica de forma unívoca la " -"compartición. Ejemplo: media." +msgstr "Acceso de lectura y escritura para repositorios Git" +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -#, fuzzy -#| msgid "Create new repository" -msgid "Description of the repository" -msgstr "Crear nuevo repositorio" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "Repository removed." -msgid "Repository's owner name" -msgstr "Repositorio eliminado." - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Create Repository" -msgid "Private repository" -msgstr "Crear repositorio" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy -#| msgid "Invalid hostname" msgid "Invalid repository name." -msgstr "Nombre de anfitrión no válido" +msgstr "Nombre de repositorio no válido." -#: plinth/modules/gitweb/forms.py:71 -#, fuzzy -#| msgid "A share with this name already exists." +#: plinth/modules/gitweb/forms.py:47 +msgid "Name of the repository" +msgstr "Nombre del repositorio" + +#: plinth/modules/gitweb/forms.py:51 +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:55 +msgid "Description of the repository" +msgstr "Descripción del repositorio" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "Opcional, para mostrar en Gitweb." + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "Nombre del dueño del repositorio" + +#: plinth/modules/gitweb/forms.py:63 +msgid "Private repository" +msgstr "Repositorio privado" + +#: plinth/modules/gitweb/forms.py:64 +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:83 msgid "A repository with this name already exists." -msgstr "Ya existe una compartición con este nombre." +msgstr "Ya existe un repositorio con este nombre." #: plinth/modules/gitweb/manifest.py:36 msgid "Git" -msgstr "" +msgstr "Git" #: plinth/modules/gitweb/templates/gitweb_configure.html:41 #: plinth/modules/gitweb/templates/gitweb_configure.html:43 -#, fuzzy -#| msgid "Create Repository" msgid "Create repository" msgstr "Crear repositorio" #: plinth/modules/gitweb/templates/gitweb_configure.html:50 -#, fuzzy -#| msgid "Create Repository" msgid "Manage Repositories" -msgstr "Crear repositorio" +msgstr "Administrar Repositorios" #: plinth/modules/gitweb/templates/gitweb_configure.html:55 -#, fuzzy -#| msgid "Tor relay port available" msgid "No repositories available." -msgstr "Puerto de servidor Tor disponible" +msgstr "No hay repositorios disponibles." #: plinth/modules/gitweb/templates/gitweb_configure.html:63 -#, fuzzy, python-format -#| msgid "Delete user %(username)s" +#, python-format msgid "Delete repository %(repo.name)s" -msgstr "Eliminar usuaria/o %(username)s" +msgstr "Eliminar repositorio %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_configure.html:78 -#, fuzzy, python-format -#| msgid "Go to site %(site)s" +#, python-format msgid "Go to repository %(repo.name)s" -msgstr "Ir al sitio %(site)s" +msgstr "Ir al repositorio %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#, fuzzy, python-format -#| msgid "Delete Wiki or Blog %(name)s" +#, python-format msgid "Delete Git Repository %(name)s" -msgstr "Borrar Wiki o Blog %(name)s" +msgstr "Borrar Repositorio Git %(name)s" #: plinth/modules/gitweb/templates/gitweb_delete.html:33 -#, fuzzy -#| msgid "Delete this snapshot permanently?" msgid "Delete this repository permanently?" -msgstr "¿Eliminar esta instantánea definitivamente?" +msgstr "¿Eliminar este repositorio definitivamente?" #: plinth/modules/gitweb/templates/gitweb_delete.html:42 #: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:44 @@ -1722,22 +1709,16 @@ msgid "Delete %(name)s" msgstr "Eliminar %(name)s" #: plinth/modules/gitweb/views.py:62 -#, fuzzy -#| msgid "Repository removed." msgid "Repository created." -msgstr "Repositorio eliminado." +msgstr "Repositorio creado." #: plinth/modules/gitweb/views.py:93 -#, fuzzy -#| msgid "Repository removed." msgid "Repository edited." -msgstr "Repositorio eliminado." +msgstr "Repositorio editado." #: plinth/modules/gitweb/views.py:98 -#, fuzzy -#| msgid "Create Repository" msgid "Edit repository" -msgstr "Crear repositorio" +msgstr "Editar repositorio" #: plinth/modules/gitweb/views.py:126 plinth/modules/searx/views.py:62 #: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:170 @@ -1754,44 +1735,44 @@ msgstr "{name} eliminado." msgid "Could not delete {name}: {error}" msgstr "No se pudo eliminar {name}: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "Documentación" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "Obtener Soporte" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "Enviar Comentarios" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "Contribuir" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "Documentación y Preguntas frecuentes" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "Acerca de {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "Manual de {box_name}" @@ -1930,6 +1911,14 @@ msgstr "" "servicios legales para el proyecto, busca socios y promueve FreedomBox por " "todo el mundo. La FreedomBox Foundation no existiría sin simpatizantes." +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "Aprenda más..." + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2113,10 +2102,8 @@ msgid "Manage I2P application" msgstr "Administrar la aplicación I2P" #: plinth/modules/i2p/__init__.py:100 -#, fuzzy -#| msgid "Web Proxy" msgid "I2P Proxy" -msgstr "Proxy Web" +msgstr "Proxy I2P" #: plinth/modules/i2p/templates/i2p_service.html:31 #: plinth/templates/clients.html:51 @@ -2208,7 +2195,7 @@ msgstr "Aplicaciones wiki para ver y editar" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Tipo" @@ -2278,30 +2265,28 @@ msgid "Could not create blog: {error}" msgstr "No se pudo crear el blog: {error}" #: plinth/modules/ikiwiki/views.py:127 -#, fuzzy, python-brace-format -#| msgid "{name} deleted." +#, python-brace-format msgid "{title} deleted." -msgstr "{name} eliminado." +msgstr "{title} eliminado." #: plinth/modules/ikiwiki/views.py:131 -#, fuzzy, python-brace-format -#| msgid "Could not delete {name}: {error}" +#, python-brace-format msgid "Could not delete {title}: {error}" -msgstr "No se pudo eliminar {name}: {error}" +msgstr "No se pudo eliminar {title}: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "Servidor Gobby" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted es un servidor para Gobby, un editor de texto colaborativo." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2400,7 +2385,7 @@ msgid "Website Security" msgstr "Seguridad del sitio" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Acciones" @@ -3100,12 +3085,16 @@ msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" +"Configurar dispositivos de red. Conectar con Internet mediante Ethernet, Wi-" +"Fi o PPPoE. Compartir esa conexión con otros dispositivos de la red." #: plinth/modules/networks/__init__.py:41 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" +"Los dispositivos administrados mediante otros métodos quizá no estén " +"disponibles para configurarse aquí." #: plinth/modules/networks/__init__.py:151 #, python-brace-format @@ -3494,7 +3483,7 @@ msgid "yes" msgstr "sí" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Dispositivo" @@ -3678,10 +3667,8 @@ msgid "Computer" msgstr "Ordenador" #: plinth/modules/networks/templates/connections_list.html:72 -#, fuzzy -#| msgid "Connection" msgid "Connections" -msgstr "Conexión" +msgstr "Conexiones" #: plinth/modules/networks/templates/connections_list.html:80 #, python-format @@ -4262,16 +4249,16 @@ msgstr "" "iskrembilen.com/\">móvil." #: plinth/modules/quassel/forms.py:38 -#, fuzzy -#| msgid "Subdomain" msgid "TLS domain" -msgstr "Subdominio" +msgstr "Dominio TLS" #: plinth/modules/quassel/forms.py:40 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." msgstr "" +"Selecciona un dominio con el que usar TLS. Si la lista está vacía, por " +"favor, configura al menos un dominio con certificados." #: plinth/modules/quassel/manifest.py:49 msgid "Quasseldroid" @@ -4632,17 +4619,13 @@ msgstr "" #: plinth/modules/security/templates/security.html:26 #: plinth/modules/security/templates/security.html:28 -#, fuzzy -#| msgid "Show security vulnerabilities" msgid "Show security report" -msgstr "Mostrar vulnerabilidades de seguridad" +msgstr "Mostrar informe de seguridad" #: plinth/modules/security/templates/security_report.html:25 #: plinth/modules/security/views.py:91 -#, fuzzy -#| msgid "Security Notice" msgid "Security Report" -msgstr "Aviso de seguridad" +msgstr "Informe de Seguridad" #: plinth/modules/security/templates/security_report.html:27 #, python-format @@ -4654,32 +4637,24 @@ msgstr "" "vulnerabilidades de seguridad." #: plinth/modules/security/templates/security_report.html:33 -#, fuzzy -#| msgid "" -#| "The following table lists the reported number of security vulnerabilities " -#| "for each installed app." msgid "" "The following table lists the current reported number, and historical count, " "of security vulnerabilities for each installed app." msgstr "" -"Esta lista muestra las cantidadesd de vulnerabilidades de seguridad para " -"cada app instalada." +"Esta lista muestra las cantidades actuales e históricamente acumuladas de " +"vulnerabilidades de seguridad para cada app instalada." #: plinth/modules/security/templates/security_report.html:41 msgid "App Name" msgstr "Nombre de la app" #: plinth/modules/security/templates/security_report.html:42 -#, fuzzy -#| msgid "Show security vulnerabilities" msgid "Current Vulnerabilities" -msgstr "Mostrar vulnerabilidades de seguridad" +msgstr "Vulnerabilidades Actuales" #: plinth/modules/security/templates/security_report.html:43 -#, fuzzy -#| msgid "Show security vulnerabilities" msgid "Past Vulnerabilities" -msgstr "Mostrar vulnerabilidades de seguridad" +msgstr "Vulnerabilidades Anteriores" #: plinth/modules/security/views.py:73 #, python-brace-format @@ -5129,27 +5104,48 @@ msgstr "" "realizar tareas de administración, copiar archivos o ejecutar otros " "servicios a través de esas conexiones." -#: plinth/modules/ssh/templates/ssh.html:26 +#: plinth/modules/ssh/forms.py:30 #, fuzzy -#| msgid "SSH Fingerprint" +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "Usar autenticación básica de HTTP" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + +#: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" -msgstr "Huella digital SSH" +msgstr "Huellas Digitales de Servidor" #: plinth/modules/ssh/templates/ssh.html:29 msgid "" "When connecting to the server, ensure that the fingerprint shown by the SSH " "client matches one of these fingerprints." msgstr "" +"Al conectar con el servidor, asegúrate de que la huella digital mostrada por " +"el cliente SSH coincide con una de éstas." #: plinth/modules/ssh/templates/ssh.html:38 msgid "Algorithm" -msgstr "" +msgstr "Algoritmo" #: plinth/modules/ssh/templates/ssh.html:39 -#, fuzzy -#| msgid "SSH Fingerprint" msgid "Fingerprint" -msgstr "Huella digital SSH" +msgstr "Huella digital" + +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "SSH authentication with password enabled." +msgstr "Ha fallado la autenticación en el servidor remoto." #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" @@ -5159,7 +5155,7 @@ msgstr "Inicio de sesión único" msgid "Login" msgstr "Inicio de sesión" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "Almacén" @@ -5251,27 +5247,27 @@ msgstr "La operación solicitada no está permitida." msgid "The device is mounted by another user." msgstr "El dispositivo está ya montado por otro usuario." -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "Se están usando los siguientes dispositivos de almacenamiento:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "Etiqueta" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "Punto de montaje" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Usado" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Expandir la partición" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5282,9 +5278,9 @@ msgstr "" "partición raíz. Se puede ampliar la partición raíz para usarlo y disponer de " "espacio libre adicional para almacenar sus archivos." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "Ampliar partición raíz" @@ -5299,16 +5295,16 @@ msgstr "" "operación su partición raíz dispondrá de %(expandable_root_size)s espacio " "libre adicional." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "Error al ampliar partición: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "Partición ampliada con éxito." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " @@ -5317,16 +5313,16 @@ msgstr "" "Aviso: queda poco espacio libre en la partición del sistema ({percent_used}% " "usado, {free_space} libre)." -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "Ya puede desconectar {drive_vendor} {drive_model} con seguridad." -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "El dispositivo ya se puede desconectar con seguridad." -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "Error al expulsar el dispositivo: {error_message}" @@ -5825,6 +5821,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 "" +"Crear y administrar cuentas de usuario. Estas cuentas sirven como mecanismo " +"de autenticación centralizado para la mayoría de las apps. Algunas apps " +"requieren que además la cuenta de usuario conste en un grupo para " +"autorizarles a acceder." #: plinth/modules/users/__init__.py:55 #, python-brace-format @@ -5833,6 +5833,10 @@ msgid "" "relevant to them in the home page. However, only users of the admin " "group may alter apps or system settings." msgstr "" +"Cualquier usuario podría ingresar en el interfaz web de {box_name} para ver " +"en la página principal una lista de apps relevantes para él. No obstante, " +"sólo los usuarios del grupo admin pueden cambiar configuraciones de " +"apps o del sistema." #: plinth/modules/users/__init__.py:123 #, python-brace-format @@ -6370,11 +6374,11 @@ msgstr "Instalando %(package_names)s: %(status)s" msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% completado" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "Aplicación activada" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "Aplicación desactivada" diff --git a/plinth/locale/fa/LC_MESSAGES/django.po b/plinth/locale/fa/LC_MESSAGES/django.po index 8e612823b..558695b6c 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2016-08-12 15:51+0000\n" "Last-Translator: Masoud Abkenar \n" "Language-Team: Persian any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "پیکربندی عمومی" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -750,60 +757,45 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -#, fuzzy -msgid "Learn more..." -msgstr "بیشتر بدانید »" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "پیکربندی عمومی" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "خطا در هنگام تنظیم نام میزبان: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "نام میزبان تنظیم شد" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "خطا در هنگام تنظیم نام دامنه: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "نام دامنه تنظیم شد" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "خطا در هنگام تنظیم نام میزبان: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "خطا در هنگام تنظیم نام دامنه: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -817,8 +809,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -1069,7 +1061,7 @@ msgstr "به‌روزرسانی وضعیت" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "" @@ -1317,7 +1309,7 @@ msgstr "" msgid "Last update" msgstr "آخرین به‌روزرسانی" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "درباره" @@ -1596,45 +1588,46 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Create Connection" -msgid "Name of the repository" -msgstr "ساختن اتصال" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -msgid "Repository's owner name" -msgstr "" - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Create Connection" -msgid "Private repository" -msgstr "ساختن اتصال" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "نام میزبان معتبر نیست" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +#, fuzzy +#| msgid "Create Connection" +msgid "Name of the repository" +msgstr "ساختن اتصال" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "" + +#: plinth/modules/gitweb/forms.py:63 +#, fuzzy +#| msgid "Create Connection" +msgid "Private repository" +msgstr "ساختن اتصال" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1720,44 +1713,44 @@ msgstr "{name} پاک شد." msgid "Could not delete {name}: {error}" msgstr "نشد که {name} پاک شود: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "راهنما" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "کتاب راهنما" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "راهنما و پرسش‌های رایج" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "دربارهٔ {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "کتاب راهنمای {box_name}" @@ -1884,6 +1877,15 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +#, fuzzy +msgid "Learn more..." +msgstr "بیشتر بدانید »" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2135,7 +2137,7 @@ msgstr "سرویس‌ها و برنامه‌ها" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "نوع" @@ -2216,21 +2218,21 @@ msgstr "{name} پاک شد." msgid "Could not delete {title}: {error}" msgstr "نشد که {name} پاک شود: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" msgstr "سرور وب" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2338,7 +2340,7 @@ msgid "Website Security" msgstr "امنیت وبسایت" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "کنش‌ها" @@ -3401,7 +3403,7 @@ msgid "yes" msgstr "بله" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "وسیله" @@ -4875,6 +4877,19 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "به‌کاربردن تأیید هویت سادهٔ تحت وب" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "SSH Fingerprint" @@ -4897,6 +4912,14 @@ msgstr "" msgid "Fingerprint" msgstr "اثر انگشت SSH" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4905,7 +4928,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -5000,30 +5023,30 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" msgid "The following storage devices are in use:" msgstr "دیسک‌های زیر در حال استفاده هستند:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "نشانی سوارشدن (mount point)" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 #, fuzzy msgid "Used" msgstr "به‌کاربرده" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5034,9 +5057,9 @@ msgstr "" "پارتیشن ریشهٔ شما می‌تواند بزرگ شود تا این فضای به‌کارنرفته را به کار ببرد. این " "کار فضای بیشتری برای ذخیرهٔ پرونده‌ها به شما خواهد داد." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "بزرگ‌کردن پارتیشن ریشه" @@ -5051,32 +5074,32 @@ msgstr "" "%(expandable_root_size)s فضای خالی در اختیار پارتیشن ریشهٔ شما قرار خواهد " "گرفت." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "خطا در هنگام بزرگ‌کردن پارتیشن: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "پارتیشن با موفقیت بزرگ شد." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -6021,11 +6044,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po index 9285a2ab4..38272fbe5 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2016-01-31 22:24+0530\n" "Last-Translator: Sunil Mohan Adapa \n" "Language-Team: Plinth Developers /IKIWIKI." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "GENERAL CONFIGURATION" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -783,61 +790,45 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -#, fuzzy -#| msgid "Learn more »" -msgid "Learn more..." -msgstr "LEARN MORE »" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "GENERAL CONFIGURATION" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "ERROR SETTING HOSTNAME: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "HOSTNAME SET" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "ERROR SETTING DOMAIN NAME: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "DOMAIN NAME SET" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "ERROR SETTING HOSTNAME: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "ERROR SETTING DOMAIN NAME: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -853,8 +844,8 @@ msgstr "ENABLE SHAARLI" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -1107,7 +1098,7 @@ msgstr "UPDATE SETUP" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "SETTING UNCHANGED" @@ -1413,7 +1404,7 @@ msgstr "" msgid "Last update" msgstr "LAST UPDATE" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "ABOUT" @@ -1711,47 +1702,48 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Create User" -msgid "Name of the repository" -msgstr "CREATE USER" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "packages not found" -msgid "Repository's owner name" -msgstr "PACKAGES NOT FOUND" - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Create User" -msgid "Private repository" -msgstr "CREATE USER" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "INVALID HOSTNAME" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +#, fuzzy +#| msgid "Create User" +msgid "Name of the repository" +msgstr "CREATE USER" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +#, fuzzy +#| msgid "packages not found" +msgid "Repository's owner name" +msgstr "PACKAGES NOT FOUND" + +#: plinth/modules/gitweb/forms.py:63 +#, fuzzy +#| msgid "Create User" +msgid "Private repository" +msgstr "CREATE USER" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "This service already exists" msgid "A repository with this name already exists." @@ -1843,44 +1835,44 @@ msgstr "{name} DELETED." msgid "Could not delete {name}: {error}" msgstr "COULD NOT DELETE {name}: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "DOCUMENTATION" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "MANUAL" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "DOCUMENTATION AND FAQ" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "ABOUT {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} MANUAL" @@ -2006,6 +1998,16 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +#, fuzzy +#| msgid "Learn more »" +msgid "Learn more..." +msgstr "LEARN MORE »" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2259,7 +2261,7 @@ msgstr "SERVICES AND APPLICATIONS" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "TYPE" @@ -2340,21 +2342,21 @@ msgstr "{name} DELETED." msgid "Could not delete {title}: {error}" msgstr "COULD NOT DELETE {name}: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" msgstr "WEB SERVER" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2463,7 +2465,7 @@ msgid "Website Security" msgstr "WEBSITE SECURITY" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "ACTIONS" @@ -3591,7 +3593,7 @@ msgid "yes" msgstr "YES" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "DEVICE" @@ -5260,6 +5262,19 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "USE HTTP BASIC AUTHENTICATION" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "GPG Fingerprint" @@ -5282,6 +5297,14 @@ msgstr "" msgid "Fingerprint" msgstr "GPG FINGERPRINT" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -5290,7 +5313,7 @@ msgstr "" msgid "Login" msgstr "LOGIN" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 #, fuzzy #| msgid "reStore" msgid "Storage" @@ -5387,29 +5410,29 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following is the current status:" msgid "The following storage devices are in use:" msgstr "THE FOLLOWING IS THE CURRENT STATUS:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5417,9 +5440,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -5431,35 +5454,35 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" msgid "Error expanding partition: {exception}" msgstr "ERROR SETTING TIME ZONE: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 #, fuzzy #| msgid "Password changed successfully." msgid "Partition expanded successfully." msgstr "PASSWORD CHANGED SUCCESSFULLY." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -6519,13 +6542,13 @@ msgstr "INSTALLING %(package_names)s: %(status)s" msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% COMPLETE" -#: plinth/views.py:179 +#: plinth/views.py:180 #, fuzzy #| msgid "Applications" msgid "Application enabled" msgstr "APPLICATIONS" -#: plinth/views.py:182 +#: plinth/views.py:183 #, fuzzy #| msgid "Applications" msgid "Application disabled" diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index eeb267ddf..5dbe5ec3e 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" -"PO-Revision-Date: 2019-10-11 10:10+0000\n" -"Last-Translator: James Valleroy \n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" +"PO-Revision-Date: 2019-11-04 18:03+0000\n" +"Last-Translator: Fred \n" "Language-Team: French \n" "Language: fr\n" @@ -17,7 +17,11 @@ msgstr "" "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.9-dev\n" +"X-Generator: Weblate 3.10-dev\n" + +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" #: plinth/action_utils.py:298 #, python-brace-format @@ -333,8 +337,6 @@ msgid "Add a remote backup location" msgstr "Ajouter un dépôt de sauvegarde distant" #: plinth/modules/backups/templates/backups.html:70 -#, fuzzy -#| msgid "Add a remote backup location" msgid "Add Remote Backup Location" msgstr "Ajouter un dépôt de sauvegarde distant" @@ -384,7 +386,6 @@ msgid "Delete Archive %(name)s" msgstr "Supprimer l'archive %(name)s" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -403,6 +404,12 @@ msgid "" " can add it again later on.\n" " " msgstr "" +"\n" +" Le dépôt distant ne sera pas supprimé.\n" +" Cela va juste supprimer le dépôt de votre liste sur la page de " +"sauvegarde,\n" +" vous pourrez l’ajouter à nouveau ultérieurement.\n" +" " #: plinth/modules/backups/templates/backups_repository_remove.html:46 msgid "Remove Location" @@ -422,16 +429,23 @@ msgid "Restoring" msgstr "Restauration" #: plinth/modules/backups/templates/backups_upload.html:32 -#, python-format +#, fuzzy, python-format msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" " " msgstr "" +"\n" +" Mettre en ligne un fichier de sauvegarde depuis un autre %(box_name)s " +"pour restaurer\n" +" son contenu. Vous pouvez choisir les applications que vous souhaitez " +"restaurer après avoir mis en ligne un\n" +" fichier de retour.\n" +" " #: plinth/modules/backups/templates/backups_upload.html:42 #: plinth/modules/help/templates/statuslog.html:38 @@ -461,10 +475,14 @@ msgid "" "one of the provided options. You can also use dsa, ecdsa, ed25519 etc. " "instead of rsa, by choosing the corresponding file." msgstr "" +"Lancez la commande suivante sur la machine hôte SSH. Sa sortie devrait " +"correspondre à l’une des options fournies. Vous pouvez également utiliser " +"dsa, ecdsa, ed25519, etc., à la place de rsa, en sélectionnant le fichier " +"correspondant." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:59 msgid "Verify Host" -msgstr "" +msgstr "Vérifier l’hôte" #: plinth/modules/backups/views.py:72 msgid "Archive created." @@ -496,27 +514,23 @@ msgstr "Restaurer depuis le fichier téléversé" #: plinth/modules/backups/views.py:255 msgid "No additional disks available to add a repository." -msgstr "" +msgstr "Pas de disques additionnels disponibles pour ajouter un dépôt." #: plinth/modules/backups/views.py:263 -#, fuzzy -#| msgid "Create remote backup repository" msgid "Create backup repository" -msgstr "Créer un dépôt de sauvegarde distant" +msgstr "Créer un dépôt de sauvegarde" #: plinth/modules/backups/views.py:290 msgid "Create remote backup repository" msgstr "Créer un dépôt de sauvegarde distant" #: plinth/modules/backups/views.py:309 -#, fuzzy -#| msgid "Added new repository." msgid "Added new remote SSH repository." -msgstr "Ajouter une nouvelle archive." +msgstr "Ajouter un nouveau dépôt SSH distant." #: plinth/modules/backups/views.py:331 msgid "Verify SSH hostkey" -msgstr "" +msgstr "Vérifier la clé SSH de l’hôte" #: plinth/modules/backups/views.py:357 msgid "SSH host already verified." @@ -539,20 +553,16 @@ msgid "Error establishing connection to server: {}" msgstr "Erreur en établissant la connexion au serveur : {}" #: plinth/modules/backups/views.py:396 -#, fuzzy -#| msgid "Repository not found" msgid "Repository removed." -msgstr "Dépôt introuvable" +msgstr "Dépôt supprimé." #: plinth/modules/backups/views.py:410 msgid "Remove Repository" msgstr "Supprimer ce dépôt" #: plinth/modules/backups/views.py:419 -#, fuzzy -#| msgid "Repository removed. The remote backup itself was not deleted." msgid "Repository removed. Backups were not deleted." -msgstr "Dépôt supprimé. Le dépôt distant lui-même n'a pas été supprimé." +msgstr "Dépôt supprimé. Les sauvegardes n'ont pas été supprimées." #: plinth/modules/backups/views.py:429 msgid "Unmounting failed!" @@ -592,7 +602,7 @@ msgstr "" #: plinth/modules/bind/forms.py:37 msgid "Forwarders" -msgstr "" +msgstr "Transitaires" #: plinth/modules/bind/forms.py:38 msgid "" @@ -638,11 +648,7 @@ msgstr "" "des opérations depuis une console." #: plinth/modules/cockpit/__init__.py:57 -#, 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, Cockpit will be available from /" "_cockpit/ path on the web server. It can be accessed by /_cockpit sur le serveur web. Il peut être consulté par tout utilisateur avec un compte admin sur {box_name}." +"\"{users_url}\">utilisateur avec un compte admin sur {box_name}." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Configuration générale" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -732,71 +742,65 @@ 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 "" +"Sélectionnez la page par défaut qui sera affichée lorsque quelqu’un visitera " +"votre {box_name} sur le web. Un cas d’usage classique est de mettre votre " +"blog ou votre wiki en page d’accueil lorsque quelqu’un visite le nom de " +"domaine. Veuillez noter que dès que la page d’accueil est réglée sur autre " +"chose que le service (Plinth) de {box_name}, vos utilisateurs doivent " +"explicitement taper /plinth ou /freedombox pour atteindre le service " +"(Plinth) the {box_name}." #: plinth/modules/config/forms.py:107 msgid "Show advanced apps and features" -msgstr "" +msgstr "Montrer les applications et fonctionnalités avancées" #: plinth/modules/config/forms.py:108 msgid "Show apps and features that require more technical knowledge." msgstr "" +"Montrer les applications et fonctionnalités nécessitant plus de " +"connaissances techniques." -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "En savoir plus..." - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Configuration générale" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Erreur lors de l'établissement du nom de machine : {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "Nom de machine établi" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Erreur lors de l'établissement du nom de domaine : {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "Nom de domaine établi" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" "Erreur lors de l'établissement de la page d’accueil du serveur Web : " "{exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "Page d’accueil du serveur Web établie" -#: plinth/modules/config/views.py:111 -#, fuzzy, python-brace-format -#| msgid "Error setting domain name: {exception}" +#: plinth/modules/config/views.py:98 +#, python-brace-format msgid "Error changing advanced mode: {exception}" -msgstr "Erreur lors de l'établissement du nom de domaine : {exception}" +msgstr "Erreur lors du changement de mode avancé : {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" -msgstr "" +msgstr "Affichage des applications et fonctionnalités avancées" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" -msgstr "" +msgstr "Cacher les applications et les fonctionnalités avancées" #: plinth/modules/coquelicot/__init__.py:40 msgid "Coquelicot" @@ -807,11 +811,19 @@ msgid "File Sharing" msgstr "Partage de fichiers" #: plinth/modules/coquelicot/__init__.py:45 +#, 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 " +"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 idéal " +"pour partager rapidement un seul fichier. " #: plinth/modules/coquelicot/__init__.py:48 msgid "" @@ -820,6 +832,11 @@ msgid "" "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 mise en ligne pour prévenir des accès non-autorisés. Vous " +"pouvez configurer un nouveau mot de passe de mise en ligne dans le " +"formulaire qui apparaîtra ci-dessous après installation. Le mot de passe pas " +"défaut est « test »." #: plinth/modules/coquelicot/forms.py:30 msgid "Upload Password" @@ -830,6 +847,8 @@ msgid "" "Set a new upload password for Coquelicot. Leave this field blank to keep the " "current password." msgstr "" +"Paramétrez un nouveau mot de passe de téléversement pour Coquelicot. Laissez " +"ce champ vide pour conserver le mot de passe actuel." #: plinth/modules/coquelicot/forms.py:35 msgid "Maximum File Size (in MiB)" @@ -838,30 +857,28 @@ msgstr "Taille de fichier maximale (en MiB)" #: plinth/modules/coquelicot/forms.py:36 msgid "Set the maximum size of the files that can be uploaded to Coquelicot." msgstr "" +"Réglez la taille maximale des fichiers pouvant être téléversés vers " +"Coquelicot." #: plinth/modules/coquelicot/manifest.py:24 msgid "coquelicot" msgstr "coquelicot" #: plinth/modules/coquelicot/views.py:59 -#, fuzzy -#| msgid "Password" msgid "Upload password updated" -msgstr "Mise à jour du mot de passe de téléchargement" +msgstr "Mise à jour du mot de passe de téléversement" #: plinth/modules/coquelicot/views.py:62 msgid "Failed to update upload password" -msgstr "" +msgstr "Échec de la mise à jour du mot de passe de téléversement" #: plinth/modules/coquelicot/views.py:70 -#, fuzzy -#| msgid "Maximum players configuration updated" msgid "Maximum file size updated" msgstr "Mise à jour de la taille maximale des fichiers" #: plinth/modules/coquelicot/views.py:73 msgid "Failed to update maximum file size" -msgstr "" +msgstr "Échec de la mise à jour de la taille maximale des fichiers" #: plinth/modules/datetime/__init__.py:39 msgid "Date & Time" @@ -931,11 +948,11 @@ msgstr "" #: plinth/modules/deluge/__init__.py:51 #: plinth/modules/transmission/__init__.py:56 msgid "Download files using BitTorrent applications" -msgstr "" +msgstr "Télécharger des fichiers avec des applications BitTorrent" #: plinth/modules/deluge/manifest.py:25 msgid "Bittorrent client written in Python/PyGTK" -msgstr "" +msgstr "Client BitTorrent écrit en Python/PyGTK" #: plinth/modules/diagnostics/__init__.py:33 msgid "Diagnostics" @@ -1017,13 +1034,15 @@ msgstr "Activer l'enregistrement de nouveaux utilisateurs" #: plinth/modules/diaspora/manifest.py:26 msgid "dandelion*" -msgstr "" +msgstr "dandelion*" #: plinth/modules/diaspora/manifest.py:28 msgid "" "It is an unofficial webview based client for the community-run, distributed " "social network diaspora*" msgstr "" +"Il s’agit d’un client basé sur une vue web non officielle pour le réseau " +"social distribué et communautaire diaspora*" #: plinth/modules/diaspora/templates/diaspora-post-setup.html:32 #, python-format @@ -1058,7 +1077,7 @@ msgstr "Actualiser la configuration" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "Paramètre inchangé" @@ -1105,10 +1124,8 @@ msgstr "" "obtiendra votre adresse IP actuelle." #: plinth/modules/dynamicdns/__init__.py:78 -#, fuzzy -#| msgid "Domain Name" msgid "Dynamic Domain Name" -msgstr "Nom de Domaine" +msgstr "Nom de domaine dynamique" #: plinth/modules/dynamicdns/forms.py:43 msgid "" @@ -1315,7 +1332,7 @@ msgstr "" msgid "Last update" msgstr "Dernière mise à jour" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "À propos" @@ -1357,21 +1374,15 @@ msgstr "" "lancer et configurer ici votre serveur XMPP, appelé ejabberd." #: plinth/modules/ejabberd/__init__.py:58 -#, 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 "" -"Pour communiquer, vous pouvez utiliser client web " -"ou tout autre client web ou tout autre client XMPP. Une fois activé, ejabberd peut être joint " "par tout utilisateur avec un compte {box_name}." @@ -1394,14 +1405,10 @@ msgstr "" "crypté." #: plinth/modules/ejabberd/manifest.py:26 -#, fuzzy -#| msgid "Connection" msgid "Conversations" msgstr "Conversations" #: plinth/modules/ejabberd/manifest.py:40 -#, fuzzy -#| msgid "ejabberd" msgid "Xabber" msgstr "Xabber" @@ -1410,14 +1417,14 @@ msgid "" "Open source Jabber (XMPP) client with multi-account support and clean and " "simple interface. " msgstr "" +"Client libre Jabber (XMPP) avec gestion multicompte et interface claire et " +"simple. " #: plinth/modules/ejabberd/manifest.py:57 msgid "Yaxim" msgstr "Yaxim" #: plinth/modules/ejabberd/manifest.py:71 -#, fuzzy -#| msgid "Chat Server" msgid "ChatSecure" msgstr "ChatSecure" @@ -1428,6 +1435,11 @@ msgid "" "new accounts on public XMPP servers (including via Tor), or even connect to " "your own server for extra security." msgstr "" +"ChatSecure est une application de messagerie libre qui propose le " +"chiffrement OTR sur XMPP. Vous pouvez vous connecter à un compte Google " +"existant, créer de nouveaux comptes sur des serveurs XMPP publics (également " +"via Tor), ou même vous connecter à votre propre serveur pour plus de " +"sécurité." #: plinth/modules/ejabberd/manifest.py:89 msgid "Dino" @@ -1552,10 +1564,12 @@ msgid "" "Enter the secret generated during FreedomBox installation. This secret can " "also be obtained from the file /var/lib/plinth/firstboot-wizard-secret" msgstr "" +"Entrez le mot de passe généré durant l'installation de FreedomBox. Il peut " +"être également trouvé dans le fichier /var/lib/plinth/firstboot-wizard-secret" #: plinth/modules/first_boot/forms.py:31 msgid "Secret" -msgstr "" +msgstr "Secret" #: plinth/modules/first_boot/templates/firstboot_complete.html:26 msgid "Setup Complete!" @@ -1589,11 +1603,11 @@ msgstr "Installation Achevée" #: plinth/modules/gitweb/__init__.py:41 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" -msgstr "" +msgstr "Gitweb" #: plinth/modules/gitweb/__init__.py:43 msgid "Simple Git Hosting" -msgstr "" +msgstr "Hébergement Git simple" #: plinth/modules/gitweb/__init__.py:46 msgid "" @@ -1605,111 +1619,99 @@ msgid "" "available graphical clients. And you can share your code with people around " "the world." msgstr "" +"Git est un système décentralisé de gestion de versions permettant de gérer " +"les changements dans du code-source pendant son développement. Gitweb " +"fournit une interface internet à des dépôts Git. Vous pouvez naviguer dans " +"l'historique des modifications et du contenu du code-source et y effectuer " +"des recherches. Vous pouvez aussi récupérer une copie (« clone ») d'un dépôt " +"et envoyer des changements dans le code avec un client Git en ligne de " +"commande ou avec l'un des nombreux clients graphiques. Vous pouvez ainsi " +"partager votre code avec des gens partout dans le monde." #: plinth/modules/gitweb/__init__.py:53 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" +"Pour en apprendre plus sur l'utilisation de Git, consultez ce tutoriel Git." #: plinth/modules/gitweb/__init__.py:57 msgid "Read-write access to Git repositories" -msgstr "" - -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Create new repository" -msgid "Name of the repository" -msgstr "Créer un nouveau dépôt" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" +msgstr "Modification des dépôts Git autorisées" +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -#, fuzzy -#| msgid "Create new repository" -msgid "Description of the repository" -msgstr "Créer un nouveau dépôt" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "Repository not found" -msgid "Repository's owner name" -msgstr "Dépôt introuvable" - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Create Repository" -msgid "Private repository" -msgstr "Créer un dépôt" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy -#| msgid "Invalid hostname" msgid "Invalid repository name." -msgstr "Nom de machine invalide" +msgstr "Nom de dépôt invalide." -#: plinth/modules/gitweb/forms.py:71 -#, fuzzy -#| msgid "This service already exists" +#: plinth/modules/gitweb/forms.py:47 +msgid "Name of the repository" +msgstr "Nom du dépôt" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "Une chaîne alpha-numérique qui identifie de manière unique un dépôt." + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "Description du dépôt" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "Optionnel, pour l'affichage dans Gitweb." + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "Propriétaire du dépôt" + +#: plinth/modules/gitweb/forms.py:63 +msgid "Private repository" +msgstr "Dépôt privé" + +#: plinth/modules/gitweb/forms.py:64 +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:83 msgid "A repository with this name already exists." -msgstr "Ce service existe déjà" +msgstr "Un dépôt existe déjà avec ce nom." #: plinth/modules/gitweb/manifest.py:36 msgid "Git" -msgstr "" +msgstr "Git" #: plinth/modules/gitweb/templates/gitweb_configure.html:41 #: plinth/modules/gitweb/templates/gitweb_configure.html:43 -#, fuzzy -#| msgid "Create Repository" msgid "Create repository" msgstr "Créer un dépôt" #: plinth/modules/gitweb/templates/gitweb_configure.html:50 -#, fuzzy -#| msgid "Create Repository" msgid "Manage Repositories" -msgstr "Créer un dépôt" +msgstr "Gérer les dépôts" #: plinth/modules/gitweb/templates/gitweb_configure.html:55 -#, fuzzy -#| msgid "Tor relay port available" msgid "No repositories available." -msgstr "Port du relais Tor disponible" +msgstr "Aucun dépôt disponible." #: plinth/modules/gitweb/templates/gitweb_configure.html:63 -#, fuzzy, python-format -#| msgid "Delete user %(username)s" +#, python-format msgid "Delete repository %(repo.name)s" -msgstr "Supprimer l'utilisateur %(username)s" +msgstr "Supprimer le dépôt %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_configure.html:78 -#, fuzzy, python-format -#| msgid "Go to site %(site)s" +#, python-format msgid "Go to repository %(repo.name)s" -msgstr "Aller au site %(site)s" +msgstr "Aller au dépôt %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#, fuzzy, python-format -#| msgid "Delete Wiki or Blog %(name)s" +#, python-format msgid "Delete Git Repository %(name)s" -msgstr "Supprimer le wki ou blogue %(name)s" +msgstr "Supprimer le dépôt Git %(name)s" #: plinth/modules/gitweb/templates/gitweb_delete.html:33 -#, fuzzy -#| msgid "Delete this snapshot permanently?" msgid "Delete this repository permanently?" -msgstr "Supprimer définitivement cet instantané ?" +msgstr "Supprimer définitivement ce dépôt ?" #: plinth/modules/gitweb/templates/gitweb_delete.html:42 #: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:44 @@ -1718,22 +1720,16 @@ msgid "Delete %(name)s" msgstr "Supprimer %(name)s" #: plinth/modules/gitweb/views.py:62 -#, fuzzy -#| msgid "Repository not found" msgid "Repository created." -msgstr "Dépôt introuvable" +msgstr "Dépôt créé." #: plinth/modules/gitweb/views.py:93 -#, fuzzy -#| msgid "Repository not found" msgid "Repository edited." -msgstr "Dépôt introuvable" +msgstr "Dépôt modifié." #: plinth/modules/gitweb/views.py:98 -#, fuzzy -#| msgid "Create Repository" msgid "Edit repository" -msgstr "Créer un dépôt" +msgstr "Modifier un dépôt" #: plinth/modules/gitweb/views.py:126 plinth/modules/searx/views.py:62 #: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:170 @@ -1750,44 +1746,44 @@ msgstr "{name} supprimé." msgid "Could not delete {name}: {error}" msgstr "La suppression de {name} n'a pas abouti : {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "Documentation" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manuel" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" -msgstr "" +msgstr "Obtenir de l'aide" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" -msgstr "" +msgstr "Faire un retour d'utilisation" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" -msgstr "" +msgstr "Participer" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "Documentation et FAQ" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "À Propos de {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "Manuel {box_name}" @@ -1855,28 +1851,23 @@ msgid "Learn more »" msgstr "En savoir plus" #: plinth/modules/help/templates/help_about.html:78 -#, 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 "Vous utilisez %(os_release)s et %(box_name)s version %(version)s." +msgstr "Vous utilisez %(os_release)s et %(box_name)s version %(version)s." #: plinth/modules/help/templates/help_about.html:83 -#, fuzzy, python-format -#| msgid "There is a new Plinth version available." +#, python-format msgid "There is a new %(box_name)s version available." msgstr "Une nouvelle version de %(box_name)s est disponible." #: plinth/modules/help/templates/help_about.html:87 -#, fuzzy, python-format -#| msgid "Plinth is up to date." +#, python-format msgid "%(box_name)s is up to date." msgstr "%(box_name)s est à jour." #: plinth/modules/help/templates/help_about.html:94 -#, fuzzy -#| msgid "Security" msgid "Security Notice" -msgstr "Sécurité" +msgstr "Information de sécurité" #: plinth/modules/help/templates/help_about.html:96 msgid "" @@ -1885,6 +1876,10 @@ msgid "" "maintained on a best-effort basis by contributors in Debian and FreedomBox " "community." msgstr "" +"Vous utilisez des paquets du projet « Debian backports ». 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:36 #: plinth/modules/help/templates/help_index.html:76 @@ -1894,7 +1889,7 @@ msgstr "Configuration de %(box_name)s" #: plinth/modules/help/templates/help_contribute.html:27 msgid "The FreedomBox project welcomes contributions of all kinds." -msgstr "" +msgstr "Le projet FreedomBox accepte vos contributions de toutes sortes." #: plinth/modules/help/templates/help_contribute.html:33 msgid "" @@ -1904,6 +1899,12 @@ msgid "" "into your language, hosting hackathons or install fests, and by spreading " "the word." msgstr "" +"Vous pouvez aider en écrivant du code-source, en effectuant des tests et en " +"remontant des bogues, par des discussions sur des nouveaux cas d'usage et de " +"nouvelles applications, en dessinant des logos et graphismes, en aidant vos " +"pairs, en traduisant FreedomBox et ses applications dans votre langue, en " +"accueillant des hackathlons ou des manifestations d'aide à l'installation, " +"et en parlant du projet autour de vous." #: plinth/modules/help/templates/help_contribute.html:43 msgid "" @@ -1916,11 +1917,27 @@ msgid "" "throughout the world. The FreedomBox Foundation would not exist without its " "supporters." msgstr "" +"Vous pouvez également aider le projet financièrement en effectuant un don à la fondation (à " +"but non-lucratif) FreedomBox. Fondée en 2011, la Fondation Freedombox est " +"une organisation à but non-lucratif avec des status « 501(c) (3) » localisée " +"à New York, destinée à aider le projet FreedomBox. Elle procure une " +"infrastructure technique et des services juridiques au projet, noue des " +"partenariats et fait connaître le projet FreedomBox à travers le monde. La " +"Fondation Freedombox ne pourrait exister sans ses soutiens." + +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "En savoir plus..." #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" -msgstr "" +msgstr "Vos retours nous aiderons à améliorer %(box_name)s !" #: plinth/modules/help/templates/help_feedback.html:33 msgid "" @@ -1928,6 +1945,9 @@ msgid "" "improve them on our discussion forum." msgstr "" +"Faites-nous part de fonctionnalités manquantes, de vos applications " +"favorites et comment les améliorer sur notre forum de discussions." #: plinth/modules/help/templates/help_feedback.html:41 msgid "" @@ -1936,10 +1956,15 @@ msgid "" "a> to let our developers know. To report, first check if the issue is " "already reported and then use the \"New issue\" button." msgstr "" +"Si vous rencontrez des bogues ou problèmes, merci d'utiliser notre outil de suivi des problèmes pour que nos développeurs en soient " +"informés. Avant cela, vérifiez d'abord que cela n'a pas déjà été décrit " +"auparavant, si ce n'est pas le cas, cliquez sur le bouton « New issue »." #: plinth/modules/help/templates/help_feedback.html:51 msgid "Thank you!" -msgstr "" +msgstr "Merci !" #: plinth/modules/help/templates/help_index.html:27 #: plinth/templates/help-menu.html:23 plinth/templates/help-menu.html:28 @@ -1993,10 +2018,8 @@ msgstr "" "#freedombox et demandez de l'aide en utilisant l'interface web pour IRC." #: plinth/modules/help/templates/help_manual.html:40 -#, fuzzy -#| msgid "Download" msgid "Download as PDF" -msgstr "Téléchargement" +msgstr "Télécharger en tant que PDF" #: plinth/modules/help/templates/help_support.html:27 #, python-format @@ -2005,12 +2028,18 @@ msgid "" "using %(box_name)s, you can ask for help from our community of users and " "contributors." msgstr "" +"Si vous avez besoin d'aide pour faire une action ou si vous faites face à un " +"problème en utilisant %(box_name)s, vous pouvez demander de l'aide de la " +"part de la communauté d'utilisateurs et contributeurs." #: plinth/modules/help/templates/help_support.html:35 msgid "" "Search for past discussions or post a new query on our discussion forum." msgstr "" +"Cherchez dans les discussions passées ou écrivez une nouvelle demande sur " +"notre forum de " +"discussions." #: plinth/modules/help/templates/help_support.html:42 msgid "" @@ -2019,18 +2048,17 @@ msgid "" "Or send an email to our mailing list." msgstr "" +"Vous pouvez également discuter avec nous sur nos canaux (couplés) IRC et " +"Matrix :
  • #freedombox sur irc.oftc.net
  • #freedombox:matrix." +"org
ou envoyer un courriel à notre liste de diffusion." #: plinth/modules/help/templates/statuslog.html:25 msgid "Status Log" msgstr "Journal d'état" #: plinth/modules/help/templates/statuslog.html:28 -#, 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 %(box_name)s Wiki." msgid "" "Find more information about I2P on their project homepage." msgstr "" -"Pour plus d'informations sur le projet %(box_name)s, visitez le Wiki %(box_name)s." +"Vous trouverez plus d'informations à propos d'I2P sur la page principale de leur projet." #: plinth/modules/i2p/__init__.py:53 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" +"La configuration aura lieu lors de la première visite à l'interface web " +"fournie." #: plinth/modules/i2p/__init__.py:59 -#, fuzzy -#| msgid "Enable application" msgid "Manage I2P application" -msgstr "Activer l'application" +msgstr "Gérer l'application I2P" #: plinth/modules/i2p/__init__.py:100 -#, fuzzy -#| msgid "Web Proxy" msgid "I2P Proxy" -msgstr "Serveur mandataire web" +msgstr "Serveur mandataire I2P" #: plinth/modules/i2p/templates/i2p_service.html:31 #: plinth/templates/clients.html:51 msgid "Launch" -msgstr "" +msgstr "Lancer" #: plinth/modules/i2p/views.py:34 msgid "Proxies" -msgstr "" +msgstr "Mandataires" #: plinth/modules/i2p/views.py:38 msgid "Anonymous torrents" -msgstr "" +msgstr "Torrents anonymes" #: plinth/modules/i2p/views.py:89 msgid "I2P Proxies and Tunnels" -msgstr "" +msgstr "Mandataires I2P et Tunnels" #: plinth/modules/i2p/views.py:92 msgid "" @@ -2120,16 +2146,22 @@ msgid "" "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" +"I2P vous permet de naviguer sur Internet et sur des services cachés " +"(eepsites) de manière anonyme. Pour cela, votre navigateur, un Navigateur " +"Tor de préférence, doit être configuré pour utiliser un mandataire (proxy)." #: plinth/modules/i2p/views.py:95 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" +"Par défaut, des mandataires HTTP, HTTPS et IRC sont disponibles. Des " +"mandataires et tunnels additionnels peuvent être configurés grâce à " +"l'interface de configuration des tunnels." #: plinth/modules/i2p/views.py:104 msgid "Anonymous Torrents" -msgstr "" +msgstr "Torrents anonymes" #: plinth/modules/i2p/views.py:107 msgid "" @@ -2137,6 +2169,9 @@ msgid "" "network. Download files by adding torrents or create a new torrent to share " "a file." msgstr "" +"I2P fournit une application pour télécharger des fichiers anonymement dans " +"un réseau pair-à-pair. Téléchargez des fichiers en ajoutant des torrents ou " +"en créant un nouveau torrent pour partager un fichier." #: plinth/modules/ikiwiki/__init__.py:41 plinth/modules/ikiwiki/manifest.py:24 msgid "ikiwiki" @@ -2160,12 +2195,7 @@ msgstr "" "ikiwiki\">/ikiwiki (s'il sont créés)." #: plinth/modules/ikiwiki/__init__.py:52 -#, 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 " @@ -2186,7 +2216,7 @@ msgstr "Afficher et modifier des applications wiki" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Type" @@ -2257,30 +2287,28 @@ msgid "Could not create blog: {error}" msgstr "Le blogue n'a pu être créé : {error}" #: plinth/modules/ikiwiki/views.py:127 -#, fuzzy, python-brace-format -#| msgid "{name} deleted." +#, python-brace-format msgid "{title} deleted." -msgstr "{name} supprimé." +msgstr "{title} supprimé." #: plinth/modules/ikiwiki/views.py:131 -#, fuzzy, python-brace-format -#| msgid "Could not delete {name}: {error}" +#, python-brace-format msgid "Could not delete {title}: {error}" -msgstr "La suppression de {name} n'a pas abouti : {error}" +msgstr "La suppression de {title} n'a pas abouti : {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "Serveur Gobby" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted est un serveur pour Gobby, un éditeur de texte collaboratif." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2296,22 +2324,16 @@ msgid "Gobby" msgstr "Gobby" #: plinth/modules/infinoted/manifest.py:29 -#, fuzzy -#| msgid "infinoted is a server for Gobby, a collaborative text editor." msgid "Gobby is a collaborative text editor" msgstr "Gobby est un éditeur de texte collaboratif." #: plinth/modules/infinoted/manifest.py:32 -#, fuzzy, python-brace-format -#| msgid "" -#| "To use it, download Gobby, " -#| "desktop client and install it. Then start Gobby and select \"Connect to " -#| "Server\" and enter your {box_name}'s domain name." +#, python-brace-format msgid "" "Start Gobby and select \"Connect to Server\" and enter your {box_name}'s " "domain name." msgstr "" -"Démarrez Gobby et sélectionnez \"Connect to Server\". Saisissez le nom de " +"Démarrez Gobby et sélectionnez « Connect to Server ». Saisissez le nom de " "domaine de {box_name}." #: plinth/modules/jsxc/__init__.py:36 plinth/modules/jsxc/manifest.py:25 @@ -2385,7 +2407,7 @@ msgid "Website Security" msgstr "Sécurité du site web" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Actions" @@ -2434,16 +2456,13 @@ msgid "Obtain" msgstr "Obtenir" #: plinth/modules/letsencrypt/templates/letsencrypt.html:134 -#, 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 "" -"Aucun domaine n'a été configuré. Configurez des domaines pour pouvoir leur " -"obtenir des certificats." +"Aucun domaine n'a été configuré. Configurez des " +"domaines pour pouvoir leur obtenir des certificats." #: plinth/modules/letsencrypt/views.py:55 #, python-brace-format @@ -2584,6 +2603,8 @@ msgid "" "New users can be registered from any client if public registration is " "enabled." msgstr "" +"De nouveaux utilisateurs peuvent s'inscrire de n'importe quel client si les " +"inscriptions publiques sont activées." #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:45 #, python-format @@ -2595,6 +2616,13 @@ msgid "" " Encrypt to obtain one.\n" " " msgstr "" +"\n" +" Le nom de domaine configuré utilise un certificat auto-signé.\n" +" La fédération avec d'autres instances de Matrix Synapse nécessite un " +"certificat TLS\n" +" valide. Rendez-vous sur Let's\n" +" Encrypt pour en obtenir un.\n" +" " #: plinth/modules/matrixsynapse/views.py:118 msgid "Public registration enabled" @@ -2620,6 +2648,11 @@ msgid "" "website. You can use MediaWiki to host a wiki-like website, take notes or " "collaborate with friends on projects." msgstr "" +"MediaWiki est l'outil collaboratif utilisé par Wikipedia et d'autres projets " +"WikiMedia. Un wiki permet à plusieurs utilisateurs de modifier le contenu " +"d'un site web. Vous pouvez utiliser MediaWiki pour héberger un site web " +"contenant un wiki, prendre des notes ou collaborer entre amis sur des " +"projets." #: plinth/modules/mediawiki/__init__.py:47 msgid "" @@ -2629,16 +2662,22 @@ msgid "" "from MediaWiki itself by going to the Special:CreateAccount page." msgstr "" +"Cette instance MediaWiki est livrée avec un mot de passe administrateur " +"généré aléatoirement. Vous pouvez changer ce mot de passe dans la section " +"« Configuration », en se loguant avec le compte « admin ». Vous pourrez " +"ensuite créer d'autres comptes-utilisateur directement dans MediaWiki en " +"allant à la page Special:CreateAccount." #: plinth/modules/mediawiki/__init__.py:53 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" +"N'importe qui ayant un lien vers ce wiki peut le lire. Seuls les " +"utilisateurs connectés peuvent faire des changements dans son contenu." #: plinth/modules/mediawiki/forms.py:30 -#, fuzzy -#| msgid "Administrator Account" msgid "Administrator Password" msgstr "Mot de passe administrateur" @@ -2647,58 +2686,50 @@ msgid "" "Set a new password for MediaWiki's administrator account (admin). Leave this " "field blank to keep the current password." msgstr "" +"Mettre un nouveau mot de passe pour le compte d'administration de MediaWiki " +"(admin). Laissez ce champ vide pour garder le mot de passe actuel." #: plinth/modules/mediawiki/forms.py:36 -#, fuzzy -#| msgid "Enable Public Registration" msgid "Enable public registrations" -msgstr "Activer l'enregistrement public" +msgstr "Activer les inscriptions publiques" #: plinth/modules/mediawiki/forms.py:37 msgid "" "If enabled, anyone on the internet will be able to create an account on your " "MediaWiki instance." msgstr "" +"Permet à n'importe qui depuis Internet de créer un compte sur votre instance " +"MediaWiki." #: plinth/modules/mediawiki/forms.py:41 -#, fuzzy -#| msgid "Enable creative mode" msgid "Enable private mode" -msgstr "Activer le mode private" +msgstr "Activer le mode privé" #: plinth/modules/mediawiki/forms.py:42 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 "" +"Verrouille l'accès. Seul les utilisateurs avec un compte peuvent lire/écrire " +"sur ce wiki. Les inscriptions publiques sont également désactivées." #: plinth/modules/mediawiki/views.py:71 -#, fuzzy -#| msgid "Password" msgid "Password updated" msgstr "Mot de passe mis à jour" #: plinth/modules/mediawiki/views.py:89 -#, fuzzy -#| msgid "Public registration enabled" msgid "Public registrations enabled" -msgstr "Enregistrements public activés" +msgstr "Inscriptions publiques activées" #: plinth/modules/mediawiki/views.py:98 -#, fuzzy -#| msgid "Public registration disabled" msgid "Public registrations disabled" -msgstr "Enregistrements public désactivés" +msgstr "Inscriptions publiques désactivées" #: plinth/modules/mediawiki/views.py:107 -#, fuzzy -#| msgid "PageKite enabled" msgid "Private mode enabled" msgstr "Mode privé activé" #: plinth/modules/mediawiki/views.py:110 -#, fuzzy -#| msgid "PageKite disabled" msgid "Private mode disabled" msgstr "Mode privé désactivé" @@ -2801,7 +2832,7 @@ msgstr "MLDonkey" #: plinth/modules/mldonkey/__init__.py:42 msgid "Peer-to-peer File Sharing" -msgstr "" +msgstr "Partage de fichiers en pair-à-pair, sans [serveur] intermédiaire" #: plinth/modules/mldonkey/__init__.py:45 msgid "" @@ -2809,6 +2840,10 @@ msgid "" "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" +"MLDonkey est une application de partage de fichiers en pair à pair (sans " +"serveur intermédiaire) utilisé pour s'échanger de gros fichiers. Il peut " +"participer à de nombreux réseaux pairs-à-pairs dont eDonkey, Kademlia, " +"Overnet, BitTorrent et DirectConnect." #: plinth/modules/mldonkey/__init__.py:48 msgid "" @@ -2816,16 +2851,22 @@ 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 "" +"Les utilisateurs membres des groupes admin ou ed2k peuvent l'utiliser via " +"l'interface web. Les utilisateurs du groupe admin peuvent également " +"l'utiliser depuis n'importe quel client sur téléphone ou ordinateur, ou " +"depuis une interface telnet. Consultez le manuel." #: plinth/modules/mldonkey/__init__.py:53 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" +"Sur {box_name}, les fichiers sont téléchargés dans le répertoire /var/lib/" +"mldonkey/." #: plinth/modules/mldonkey/__init__.py:61 msgid "Download files using eDonkey applications" -msgstr "" +msgstr "Fichiers téléchargés avec les applications eDonkey" #: plinth/modules/mldonkey/manifest.py:34 msgid "KMLDonkey" @@ -3051,30 +3092,40 @@ 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 "" +"Le serveur de noms affiche un résumé des manières dont {box_name} peut être " +"accédée depuis l'Internet public : nom de domaine, service Tor caché et " +"Pagekite. Pour chaque type de nom, il indique si les services HTTP, HTTPS et " +"SSH sont activés ou non pour les connexions entrantes sur le nom donné." #: plinth/modules/names/components.py:27 msgid "All" -msgstr "" +msgstr "Tous" #: plinth/modules/names/components.py:31 plinth/modules/names/components.py:35 msgid "All web apps" -msgstr "" +msgstr "Toutes les applications web" #: plinth/modules/networks/__init__.py:36 msgid "Networks" msgstr "Réseaux" #: plinth/modules/networks/__init__.py:39 +#, fuzzy msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" +"Configurer des périphériques-réseau. Connexion à Internet via Ethernet, du " +"Wi-Fi ou le protocole PPPoE. Partager cette connexion avec d'autres " +"périphériques sur le réseau local." #: plinth/modules/networks/__init__.py:41 msgid "" "Devices administered through other methods may not be available for " "configuration here." 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:151 #, python-brace-format @@ -3468,7 +3519,7 @@ msgid "yes" msgstr "oui" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Appareil" @@ -3653,10 +3704,8 @@ msgid "Computer" msgstr "Machine" #: plinth/modules/networks/templates/connections_list.html:72 -#, fuzzy -#| msgid "Connection" msgid "Connections" -msgstr "Connexion" +msgstr "Connexions" #: plinth/modules/networks/templates/connections_list.html:80 #, python-format @@ -3717,14 +3766,7 @@ msgid "Profile" msgstr "Profil" #: plinth/modules/openvpn/templates/openvpn.html:43 -#, 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 " @@ -3732,9 +3774,9 @@ msgid "" "\" title=\"%(box_name)s Manual - OpenVPN\">manual page on recommended " "clients and instructions on how to configure them." msgstr "" -"Pour vous connecter au réseau VPN %(box_name)s, vous devez télécharger un " -"profil et l'accoler à un client VPN sur votre mobile ou sur votre " -"ordinateur. Les clients OpenVPN sont disponibles pour de nombreuses plate-" +"Pour vous connecter au réseau VPN de %(box_name)s, vous devez télécharger un " +"profil et le fournir à un client OpenVPN sur votre mobile ou sur votre " +"ordinateur. Les clients OpenVPN sont disponibles pour de nombreuses plate-" "formes. Voir la documentation wiki consacrée aux clients recommandés " "et aux instructions liées à leur configuration." @@ -3836,16 +3878,12 @@ msgstr "" "Internet via NAT." #: plinth/modules/pagekite/__init__.py:58 -#, 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 "" -"Votre FAI ne vous fournit pas une adresse statique, votre adresse IP change " -"à chaque fois que vous vous connectez à l'Internet." +"Votre FAI ne vous fournit pas une adresse IP statique, elle change à chaque " +"fois que vous vous connectez à l'Internet." #: plinth/modules/pagekite/__init__.py:60 msgid "Your ISP limits incoming connections." @@ -3867,10 +3905,8 @@ msgstr "" "faire." #: plinth/modules/pagekite/__init__.py:88 -#, fuzzy -#| msgid "PageKite Account" msgid "PageKite Domain" -msgstr "Compte PageKite" +msgstr "Domaine PageKite" #: plinth/modules/pagekite/forms.py:67 msgid "Enable PageKite" @@ -4257,16 +4293,16 @@ msgstr "" "téléchargement." #: plinth/modules/quassel/forms.py:38 -#, fuzzy -#| msgid "Subdomain" msgid "TLS domain" -msgstr "Sous-domaine" +msgstr "Domaine TLS" #: plinth/modules/quassel/forms.py:40 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." msgstr "" +"Sélectionner un domaine à utiliser avec TLS. Si la liste est vide, il vous " +"faudra configurer au moins un domaine avec des certificats." #: plinth/modules/quassel/manifest.py:49 msgid "Quasseldroid" @@ -4302,6 +4338,10 @@ msgid "" "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" +"Radicale fournit une interface web très sommaire, qui ne permet que la " +"création de nouveaux calendriers et carnets d'adresses. Elle ne permet pas " +"l'ajout d'événements ou de contacts, qui doivent être faits avec un client " +"dédié." #: plinth/modules/radicale/forms.py:30 msgid "Only the owner of a calendar/addressbook can view or make changes." @@ -4310,26 +4350,22 @@ msgstr "" "effectuer des modifications." #: plinth/modules/radicale/forms.py:34 -#, 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 "" -"N'importe quel utilisateur avec un {box_name} login peut afficher n'importe " +"N'importe quel utilisateur avec un login {box_name} peut afficher n'importe " "quel calendrier/carnet d'adresses, mais seul le propriétaire peut effectuer " "des modifications." #: plinth/modules/radicale/forms.py:39 -#, 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 "" -"N'importe quel utilisateur avec un {box_name} login peut afficher et " +"N'importe quel utilisateur avec un login {box_name} peut afficher et " "effectuer des modifications sur n'importe quel calendrier/carnet d'adresses." #: plinth/modules/radicale/manifest.py:25 @@ -4342,10 +4378,14 @@ msgid "" "address>) and your user name. DAVx5 will show all existing calendars and " "address books and you can create new." msgstr "" +"Entrez l'URL de votre serveur Radicale (par exemple https://) et votre compte. DAVx5 vous affichera tous les calendriers et " +"carnet d'adresses existants et vous pourrez en créer de nouveaux." #: plinth/modules/radicale/manifest.py:44 +#, fuzzy msgid "GNOME Calendar" -msgstr "" +msgstr "GNOME Calendar" #: plinth/modules/radicale/manifest.py:52 msgid "Mozilla Thunderbird" @@ -4360,6 +4400,8 @@ msgid "" "Evolution is a personal information management application that provides " "integrated mail, calendaring and address book functionality." msgstr "" +"Évolution est une application de gestion d'informations personnelles qui " +"intègre une messagerie électronique, un calendrier et un carnet d'adresses." #: plinth/modules/radicale/manifest.py:78 msgid "" @@ -4368,6 +4410,10 @@ msgid "" "address>) and your user name. Clicking on the search button will list the " "existing calendars and address books." msgstr "" +"Dans Evolution, ajoutez un nouveau calendrier ou un nouveau carnet " +"d'adresses avec WebDAV. Entrez l'URL du serveur Radicale (par exemple " +"https://) et votre compte-utilisateur. Cliquer sur le " +"bouton de recherche listera les calendriers et carnets d'adresses existants." #: plinth/modules/radicale/views.py:56 msgid "Access rights configuration updated" @@ -4426,10 +4472,12 @@ msgstr "" "réactivez-le." #: plinth/modules/repro/manifest.py:30 +#, fuzzy msgid "Jitsi Meet" -msgstr "" +msgstr "Jitsi Meet" #: plinth/modules/repro/manifest.py:32 +#, fuzzy msgid "" "Jitsi is a set of open-source projects that allows you to easily build and " "deploy secure videoconferencing solutions. At the heart of Jitsi are Jitsi " @@ -4437,6 +4485,12 @@ msgid "" "while other projects in the community enable other features such as audio, " "dial-in, recording, and simulcasting." msgstr "" +"Jitsi est un ensemble de projet open-source qui vous permettent de " +"facilement construire et déployer des solutions de video-conférence " +"sécurisées. Au cœur de Jitsi on trouve Jitsi Videobridge et Jitsi Meet, qui " +"vous permettront de faire des conférences sur Internet, tandis qu e d'autres " +"projets ajoutent d'autres fonctionnalités, comme l'audio, les appels " +"entrants, l'enregistrement et la multi-diffusion." #: plinth/modules/repro/manifest.py:69 msgid "CSipSimple" @@ -4534,8 +4588,6 @@ msgid "Searx" msgstr "Searx" #: plinth/modules/searx/__init__.py:42 -#, fuzzy -#| msgid "Web Server" msgid "Web Search" msgstr "Recherche sur le Web" @@ -4544,20 +4596,25 @@ msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" +"Searx est un meta-moteur de recherche sur Internet qui respecte votre vie " +"privée. Il rassemble et affiche les résultats de plusieurs moteurs de " +"recherche." #: plinth/modules/searx/__init__.py:47 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" +"Searx peut être utilisé pour éviter le pistage et le profilage fait par les " +"moteurs de recherche. Il ne stocke aucun cookie par défaut." #: plinth/modules/searx/__init__.py:51 msgid "Search the web" -msgstr "" +msgstr "Rechercher sur le web" #: plinth/modules/searx/forms.py:30 msgid "Safe Search" -msgstr "" +msgstr "Recherche sûre" #: plinth/modules/searx/forms.py:31 msgid "Select the default family filter to apply to your search results." @@ -4565,23 +4622,24 @@ msgstr "" #: plinth/modules/searx/forms.py:32 msgid "None" -msgstr "" +msgstr "Aucun" #: plinth/modules/searx/forms.py:32 msgid "Moderate" -msgstr "" +msgstr "Modéré" #: plinth/modules/searx/forms.py:32 msgid "Strict" -msgstr "" +msgstr "Strict" #: plinth/modules/searx/forms.py:35 msgid "Allow Public Access" -msgstr "" +msgstr "Permettre l'accès public" #: plinth/modules/searx/forms.py:36 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:59 plinth/modules/searx/views.py:70 #: plinth/modules/tor/views.py:141 plinth/modules/tor/views.py:168 @@ -4608,11 +4666,6 @@ msgid "Fail2Ban (recommended)" msgstr "Fail2ban (recommandé)" #: plinth/modules/security/forms.py:36 -#, fuzzy -#| msgid "" -#| "When this option is enabled, fail2ban will limit brute force break-in " -#| "attempts to the SSH server and other password protected internet-services " -#| "which are enabled." msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4624,17 +4677,13 @@ msgstr "" #: plinth/modules/security/templates/security.html:26 #: plinth/modules/security/templates/security.html:28 -#, fuzzy -#| msgid "Security" msgid "Show security report" -msgstr "Sécurité" +msgstr "Montrer le rapport de sécurité" #: plinth/modules/security/templates/security_report.html:25 #: plinth/modules/security/views.py:91 -#, fuzzy -#| msgid "Security" msgid "Security Report" -msgstr "Sécurité" +msgstr "Rapport de sécurité" #: plinth/modules/security/templates/security_report.html:27 #, python-format @@ -4642,26 +4691,28 @@ msgid "" "The installed version of FreedomBox has %(count)s reported security " "vulnerabilities." msgstr "" +"La version installée de FreedomBox comporte %(count)s faille(s) de sécurité " +"connue(s)." #: plinth/modules/security/templates/security_report.html:33 msgid "" "The following table lists the current reported number, and historical count, " "of security vulnerabilities for each installed app." msgstr "" +"La table suivante liste le nombre de failles de sécurité actuelles et " +"passées de chaque application installée." #: plinth/modules/security/templates/security_report.html:41 -#, fuzzy -#| msgid "Name" msgid "App Name" -msgstr "Nom" +msgstr "Application" #: plinth/modules/security/templates/security_report.html:42 msgid "Current Vulnerabilities" -msgstr "" +msgstr "failles actuelles" #: plinth/modules/security/templates/security_report.html:43 msgid "Past Vulnerabilities" -msgstr "" +msgstr "Anciennes failles" #: plinth/modules/security/views.py:73 #, python-brace-format @@ -4696,12 +4747,13 @@ msgstr "" "visite." #: plinth/modules/shadowsocks/__init__.py:35 +#, fuzzy msgid "Shadowsocks" -msgstr "" +msgstr "Shadowsocks" #: plinth/modules/shadowsocks/__init__.py:37 msgid "Socks5 Proxy" -msgstr "" +msgstr "Mandataire Socks5" #: plinth/modules/shadowsocks/__init__.py:44 msgid "" @@ -4709,6 +4761,9 @@ msgid "" "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" +"Shadowsocks est un mandataire SOCKS5 léger et sécurisé, conçu pour protéger " +"votre trafic Internet. Il peut servir à court-circuiter le filtrage et la " +"censure d'Internet." #: plinth/modules/shadowsocks/__init__.py:48 #, python-brace-format @@ -4718,41 +4773,49 @@ msgid "" "connect to this proxy, and their data will be encrypted and proxied through " "the Shadowsocks server." msgstr "" +"Votre {box_name} peut faire fonctionner un client Shadowsocks, qui se " +"connectera à un serveur Shadowsocks. Il mettra également en place un " +"mandataire SOCKS5. Les périphériques locaux peuvent se connecter à ce " +"mandataire, et leurs flux de données seront chiffrés et transmis à travers " +"le serveur Shadowsocks." #: plinth/modules/shadowsocks/__init__.py:53 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" +"Pour utiliser Shadowsocks une fois la configuration effectuée, positionnez " +"l'URL du mandataire SOCKS5 sur votre périphérique, navigateur ou application " +"avec http://adresse_freedombox:1080/" #: plinth/modules/shadowsocks/forms.py:28 #: plinth/modules/shadowsocks/forms.py:29 -#, fuzzy -#| msgid "Fail2ban (recommended)" msgid "Recommended" msgstr "Recommandé" #: plinth/modules/shadowsocks/forms.py:54 msgid "Server" -msgstr "" +msgstr "Serveur" #: plinth/modules/shadowsocks/forms.py:54 msgid "Server hostname or IP address" -msgstr "" +msgstr "Nom ou adresse IP du serveur" #: plinth/modules/shadowsocks/forms.py:58 -#, fuzzy -#| msgid "Server port" msgid "Server port number" msgstr "Numéro de port du serveur" #: plinth/modules/shadowsocks/forms.py:61 msgid "Password used to encrypt data. Must match server password." msgstr "" +"Mot de passe utilisé pour chiffrer les données. Doit correspondre au mot de " +"passe du serveur." #: plinth/modules/shadowsocks/forms.py:66 msgid "Encryption method. Must match setting on server." msgstr "" +"Méthode de chiffrage. Doit correspondre à ce qui a été configuré sur le " +"serveur." #: plinth/modules/sharing/__init__.py:34 msgid "Sharing" @@ -4764,134 +4827,117 @@ msgid "" "Sharing allows you to share files and folders on your {box_name} over the " "web with chosen groups of users." msgstr "" +"Sharing vous permet de partager des fichiers et répertoires de votre " +"{box_name} sur Internet avec un groupe d'utilisateurs choisis." #: plinth/modules/sharing/forms.py:33 msgid "Name of the share" -msgstr "" +msgstr "Nom du partage" #: plinth/modules/sharing/forms.py:35 msgid "" "A lowercase alpha-numeric string that uniquely identifies a share. Example: " "media." msgstr "" +"Une chaîne alpha-numérique en minuscules qui identifie de manière unique un " +"partage. Par exemple : media." #: plinth/modules/sharing/forms.py:39 msgid "Path to share" -msgstr "" +msgstr "Chemin du partage" #: plinth/modules/sharing/forms.py:40 msgid "Disk path to a folder on this server that you intend to share." -msgstr "" +msgstr "Chemin d'un répertoire sur ce serveur que vous voulez partager." #: plinth/modules/sharing/forms.py:43 -#, fuzzy -#| msgid "Publish Key" msgid "Public share" -msgstr "Publier la clef" +msgstr "Partage public" #: plinth/modules/sharing/forms.py:44 msgid "Make files in this folder available to anyone with the link." msgstr "" +"Les fichiers de ce répertoire seront disponibles à n'importe qui avec le " +"lien." #: plinth/modules/sharing/forms.py:48 msgid "User groups that can read the files in the share" -msgstr "" +msgstr "Groupe d'utilisateurs qui peuvent lire les fichiers du partage" #: plinth/modules/sharing/forms.py:50 msgid "" "Users of the selected user groups will be able to read the files in the " "share." msgstr "" +"Les utilisateurs des groupes sélectionnés pourront lire les fichiers du " +"partage." #: plinth/modules/sharing/forms.py:67 -#, fuzzy -#| msgid "This service already exists" msgid "A share with this name already exists." -msgstr "Ce service existe déjà" +msgstr "Un partage existe déjà avec ce nom." #: plinth/modules/sharing/forms.py:78 msgid "Shares should be either public or shared with at least one group" -msgstr "" +msgstr "Les partages peuvent être publics ou restreints à au moins un groupe" #: plinth/modules/sharing/templates/sharing.html:43 #: plinth/modules/sharing/templates/sharing.html:46 -#, fuzzy -#| msgid "Add Service" msgid "Add share" -msgstr "Ajouter Service" +msgstr "Ajouter un partage" #: plinth/modules/sharing/templates/sharing.html:51 msgid "No shares currently configured." -msgstr "" +msgstr "Aucun partage actuellement configuré." #: plinth/modules/sharing/templates/sharing.html:57 msgid "Disk Path" -msgstr "" +msgstr "Chemin" #: plinth/modules/sharing/templates/sharing.html:58 -#, fuzzy -#| msgid "Shared" msgid "Shared Over" -msgstr "Partagée" +msgstr "Partagé sur" #: plinth/modules/sharing/templates/sharing.html:59 -#, fuzzy -#| msgid "Groups" msgid "With Groups" -msgstr "Groupes" +msgstr "Au moyen de groupes" #: plinth/modules/sharing/templates/sharing.html:77 msgid "public access" -msgstr "" +msgstr "Accès public" #: plinth/modules/sharing/views.py:54 -#, fuzzy -#| msgid "Shared" msgid "Share added." -msgstr "Partagée" +msgstr "Partage créé." #: plinth/modules/sharing/views.py:59 -#, fuzzy -#| msgid "Add Service" msgid "Add Share" -msgstr "Ajouter Service" +msgstr "Ajouter un partage" #: plinth/modules/sharing/views.py:74 -#, fuzzy -#| msgid "Shared" msgid "Share edited." -msgstr "Partagée" +msgstr "Partage modifié." #: plinth/modules/sharing/views.py:79 -#, fuzzy -#| msgid "Edit User" msgid "Edit Share" -msgstr "Modifier Share" +msgstr "Modifier un partage" #: plinth/modules/sharing/views.py:110 -#, fuzzy -#| msgid "{name} deleted." msgid "Share deleted." -msgstr "Share supprimé." +msgstr "Partage supprimé." #: plinth/modules/snapshot/__init__.py:37 msgid "Storage Snapshots" msgstr "Instantanés de stockage" #: plinth/modules/snapshot/__init__.py:40 -#, 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 "" -"Les instantanés permettent la création et la gestion d'instantanés du " -"système de fichiers. Ils peuvent être utilisés pour faire revenir le système " -"à un précédent état correct connu en cas de changements non désirés." +"Les instantanés permettent la création et la gestion d'instantanés de " +"système de fichiers btrfs. Ils peuvent être utilisés pour faire revenir le " +"système à un précédent état correct connu en cas de changements non désirés." #: plinth/modules/snapshot/__init__.py:44 #, no-python-format @@ -4900,6 +4946,9 @@ msgid "" "and after a software installation. Older snapshots will be automatically " "cleaned up according to the settings below." msgstr "" +"Les instantanés sont pris périodiquement (instantanés programmés) et " +"également avant et après une installation de logiciels. Les anciens " +"instantanés seront automatiquement nettoyés suivant le paramétrage suivant." #: plinth/modules/snapshot/__init__.py:47 msgid "" @@ -4907,10 +4956,14 @@ msgid "" "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" +"Les instantanés ne fonctionnent actuellement que sur des systèmes de " +"fichiers btrfs et sur la partition racine uniquement. Les instantanés ne " +"remplacent pas les sauvegardes car ils " +"ne peuvent être enregistrés que sur la même partition. " #: plinth/modules/snapshot/forms.py:27 msgid "Free Disk Space to Maintain" -msgstr "" +msgstr "Place-disque libre à préserver" #: plinth/modules/snapshot/forms.py:28 msgid "" @@ -4918,73 +4971,78 @@ msgid "" "below this value, older snapshots are removed until this much free space is " "regained. The default value is 30%." msgstr "" +"Préserve ce pourcentage de place-libre sur le disque. Si la place-disque " +"passe sous cette valeur, les anciens instantanés sont supprimés jusqu'à ce " +"que suffisamment de place soit récupérée. La valeur par défaut est 30 %." #: plinth/modules/snapshot/forms.py:35 -#, fuzzy -#| msgid "Delete Snapshot" msgid "Timeline Snapshots" -msgstr "Chronologie l'instantané" +msgstr "Instantanés programmés" #: plinth/modules/snapshot/forms.py:36 msgid "" "Enable or disable timeline snapshots (hourly, daily, monthly and yearly)." msgstr "" +"Active ou désactive les instantanés programmés (à un rythme horaire, " +"journalier, mensuel ou annuel)." #: plinth/modules/snapshot/forms.py:41 msgid "Software Installation Snapshots" -msgstr "" +msgstr "Instantanés d'installation de logiciels" #: plinth/modules/snapshot/forms.py:42 msgid "Enable or disable snapshots before and after software installation" msgstr "" +"Active ou désactive la prise d'instantanés avant et après l'installation de " +"logiciels" #: plinth/modules/snapshot/forms.py:46 msgid "Hourly Snapshots Limit" -msgstr "" +msgstr "Limite d'instantanés horaires" #: plinth/modules/snapshot/forms.py:47 msgid "Keep a maximum of this many hourly snapshots." -msgstr "" +msgstr "Maximum d'instantanés pris chaque heure à conserver." #: plinth/modules/snapshot/forms.py:50 msgid "Daily Snapshots Limit" -msgstr "" +msgstr "Limite d'instantanés quotidiens" #: plinth/modules/snapshot/forms.py:51 msgid "Keep a maximum of this many daily snapshots." -msgstr "" +msgstr "Maximum d'instantanés pris chaque jour à conserver." #: plinth/modules/snapshot/forms.py:54 msgid "Weekly Snapshots Limit" -msgstr "" +msgstr "Limite d'instantanés hebdomadaires" #: plinth/modules/snapshot/forms.py:55 msgid "Keep a maximum of this many weekly snapshots." -msgstr "" +msgstr "Maximum d'instantanés pris chaque semaine à conserver." #: plinth/modules/snapshot/forms.py:58 msgid "Monthly Snapshots Limit" -msgstr "" +msgstr "Limite d'instantanés mensuels" #: plinth/modules/snapshot/forms.py:59 msgid "Keep a maximum of this many monthly snapshots." -msgstr "" +msgstr "Maximum d'instantanés pris chaque mois à conserver." #: plinth/modules/snapshot/forms.py:62 msgid "Yearly Snapshots Limit" -msgstr "" +msgstr "Limite d'instantanés annuels" #: plinth/modules/snapshot/forms.py:63 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." msgstr "" +"Maximum d'instantanés pris chaque année à conserver. La valeur par défaut " +"est 0 (désactivé)." #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:27 -#, fuzzy -#| msgid "Delete this snapshot permanently?" msgid "Delete the following snapshots permanently?" -msgstr "Supprimer définitivement cet instantané ?" +msgstr "Supprimer définitivement ces instantanés ?" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:31 #: plinth/modules/snapshot/templates/snapshot_manage.html:43 @@ -5001,10 +5059,8 @@ msgstr "Date" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:52 #: plinth/modules/snapshot/templates/snapshot_manage.html:37 #: plinth/modules/snapshot/views.py:196 -#, fuzzy -#| msgid "Delete Snapshot" msgid "Delete Snapshots" -msgstr "Supprimer l'instantané" +msgstr "Supprimer les instantanés" #: plinth/modules/snapshot/templates/snapshot_manage.html:33 msgid "Create Snapshot" @@ -5029,6 +5085,9 @@ msgid "" "Your have a filesystem of type %(fs_type)s. Snapshots are " "currently only available on %(types_supported)s filesystems." msgstr "" +"Vous avez un système de fichiers de type %(fs_type)s. Les " +"instantanés ne sont pour l'instant gérés que sur les systèmes de fichiers " +"%(types_supported)s." #: plinth/modules/snapshot/templates/snapshot_rollback.html:27 msgid "Roll back the system to this snapshot?" @@ -5050,20 +5109,16 @@ msgid "Rollback to Snapshot #%(number)s" msgstr "Revenir à l'instantané #%(number)s" #: plinth/modules/snapshot/views.py:45 -#, fuzzy -#| msgid "Storage Snapshots" msgid "Manage Snapshots" -msgstr "Instantanés de stockage" +msgstr "Gestion des instantanés" #: plinth/modules/snapshot/views.py:98 msgid "Created snapshot." msgstr "Instantané créé." #: plinth/modules/snapshot/views.py:157 -#, fuzzy -#| msgid "Access rights configuration updated" msgid "Storage snapshots configuration updated" -msgstr "Configuration des droits d'accès mise à jour" +msgstr "Configuration du stockage des instantanés mise à jour" #: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:73 #, python-brace-format @@ -5071,20 +5126,16 @@ msgid "Action error: {0} [{1}] [{2}]" msgstr "Erreur sur action : {0} [{1}] [{2}]" #: plinth/modules/snapshot/views.py:175 -#, fuzzy -#| msgid "Delete Snapshot" msgid "Deleted all snapshots" -msgstr "Supprimer l'instantané" +msgstr "Supprimer tous les instantanés" #: plinth/modules/snapshot/views.py:179 -#, fuzzy -#| msgid "Delete Snapshot" msgid "Deleted selected snapshots" -msgstr "Supprimer l'instantané" +msgstr "Supprimer les instantanés sélectionnés" #: plinth/modules/snapshot/views.py:184 msgid "Snapshot is currently in use. Please try again later." -msgstr "" +msgstr "L'instantané est utilisé actuellement. Veuillez ré-essayer plus tard." #: plinth/modules/snapshot/views.py:207 #, python-brace-format @@ -5115,27 +5166,48 @@ 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/templates/ssh.html:26 +#: plinth/modules/ssh/forms.py:30 #, fuzzy -#| msgid "SSH Fingerprint" +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "Utiliser une authentification HTTP basique" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + +#: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" -msgstr "Empreinte SSH" +msgstr "Empreintes du serveur" #: plinth/modules/ssh/templates/ssh.html:29 msgid "" "When connecting to the server, ensure that the fingerprint shown by the SSH " "client matches one of these fingerprints." msgstr "" +"Lors de la connexion au serveur, assurez-vous que l'empreinte affichée par " +"le client SSH correspond bien à l'une de ces empreintes." #: plinth/modules/ssh/templates/ssh.html:38 msgid "Algorithm" -msgstr "" +msgstr "Algorithme" #: plinth/modules/ssh/templates/ssh.html:39 -#, fuzzy -#| msgid "SSH Fingerprint" msgid "Fingerprint" -msgstr "Empreinte SSH" +msgstr "Empreinte" + +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "SSH authentication with password enabled." +msgstr "Échec de l'authentification sur le serveur distant." #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" @@ -5145,7 +5217,7 @@ msgstr "Authentification unique" msgid "Login" msgstr "S'identifier" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "Stockage" @@ -5156,6 +5228,9 @@ msgid "" "You can view the storage media currently in use, mount and unmount removable " "media, expand the root partition etc." msgstr "" +"Ce module vous permet de gérer les media de stockage connectés à votre " +"{box_name}. Vous pouvez vour les media de stockage utilisés actuellement, " +"monter et démonter les média amovibles , étendre la partition racine, etc." #: plinth/modules/storage/__init__.py:215 #, python-brace-format @@ -5184,79 +5259,81 @@ msgstr "{disk_size:.1f} Tio" #: plinth/modules/storage/__init__.py:237 msgid "The operation failed." -msgstr "" +msgstr "L'opération a échoué." #: plinth/modules/storage/__init__.py:239 msgid "The operation was cancelled." -msgstr "" +msgstr "L'opération a été annulée." #: plinth/modules/storage/__init__.py:241 msgid "The device is already unmounting." -msgstr "" +msgstr "Le media est déjà en train d'être démonté." #: plinth/modules/storage/__init__.py:243 msgid "The operation is not supported due to missing driver/tool support." msgstr "" +"L'opération n'est pas gérée à cause du manque d'un pilote ou d'un outil " +"adapté." #: plinth/modules/storage/__init__.py:246 msgid "The operation timed out." -msgstr "" +msgstr "L'opération ne s'est pas terminée." #: plinth/modules/storage/__init__.py:248 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:251 msgid "Attempting to unmount a device that is busy." -msgstr "" +msgstr "Tentative de démonter un media qui a du travail en cours." #: plinth/modules/storage/__init__.py:253 msgid "The operation has already been cancelled." -msgstr "" +msgstr "L'opération a déjà été annulée." #: plinth/modules/storage/__init__.py:259 msgid "Not authorized to perform the requested operation." -msgstr "" +msgstr "Vous n'êtes pas autorisé à effectuer l'opération demandée." #: plinth/modules/storage/__init__.py:261 msgid "The device is already mounted." -msgstr "" +msgstr "Le media est déjà monté." #: plinth/modules/storage/__init__.py:263 msgid "The device is not mounted." -msgstr "" +msgstr "Le media n'est pas monté." #: plinth/modules/storage/__init__.py:266 msgid "Not permitted to use the requested option." -msgstr "" +msgstr "Vous n'êtes pas autorisé à utiliser l'option demandée." #: plinth/modules/storage/__init__.py:269 msgid "The device is mounted by another user." -msgstr "" +msgstr "Le media est monté par un autre utilisateur." -#: plinth/modules/storage/templates/storage.html:53 -#, fuzzy -#| msgid "The following disks are in use:" +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" -msgstr "Les disques suivants sont en cours d'utilisation :" +msgstr "Les media de stockage suivants sont en cours d'utilisation :" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" -msgstr "" +msgstr "Étiquette" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "Point de montage" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Utilisé" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Extension de la partition" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5267,9 +5344,9 @@ msgstr "" "partition root. La partition root peut être étendue pour l'utiliser. Cela " "vous donnera de l'espace supplémentaire pour stocker vos fichiers." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "Étendre la partition root" @@ -5284,16 +5361,16 @@ msgstr "" "%(expandable_root_size)s d'espace en plus sera disponible pour votre " "partition root." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "Erreur lors de l'expansion de la partition : {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "Partition étendue avec succès." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " @@ -5302,19 +5379,19 @@ msgstr "" "Attention : espace faible sur la partition système, ({percent_used}% " "utilisé, {free_space} libre)." -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." -msgstr "" +msgstr "{drive_vendor} {drive_model} peut être débranché en toute sécurité." -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." -msgstr "" +msgstr "Le media peut être débranché en toute sécurité." -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" -msgstr "" +msgstr "Erreur lors de l'éjection du media : {error_message}" #: plinth/modules/syncthing/__init__.py:40 #: plinth/modules/syncthing/manifest.py:28 @@ -5368,7 +5445,7 @@ msgstr "" #: plinth/modules/syncthing/__init__.py:64 msgid "Administer Syncthing application" -msgstr "" +msgstr "Administre l'application Syncthing" #: plinth/modules/tahoe/__init__.py:43 msgid "Tahoe-LAFS" @@ -5464,7 +5541,7 @@ msgstr "Service Caché Tor" #: plinth/modules/tor/__init__.py:84 msgid "Tor Socks Proxy" -msgstr "" +msgstr "Mandataire Socks Tor" #: plinth/modules/tor/__init__.py:88 msgid "Tor Bridge Relay" @@ -5596,11 +5673,11 @@ msgstr "Spécifiez au moins un pont upstream pour utiliser des ponts upstream." #: plinth/modules/tor/manifest.py:29 msgid "Tor Browser" -msgstr "" +msgstr "Navigateur Tor" #: plinth/modules/tor/manifest.py:45 msgid "Orbot: Proxy with Tor" -msgstr "" +msgstr "Orbot : Mandataire avec Tor" #: plinth/modules/tor/templates/tor.html:46 msgid "Tor configuration is being updated" @@ -5700,11 +5777,7 @@ msgstr "" "ordinateur." #: plinth/modules/ttrss/__init__.py:52 -#, 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 will be available from /tt-" "rss path on the web server. It can be accessed by any /tt-rss-app for connecting." msgstr "" +"Lors de l'utilisation de Tiny Tiny RSS avec un téléphone ou un ordinateur, " +"utilisez l'URL tt-rss-app pour se connecter." #: plinth/modules/ttrss/__init__.py:63 msgid "Read and subscribe to news feeds" -msgstr "" +msgstr "Lire et souscrire à des abonnements d'infos" #: plinth/modules/ttrss/manifest.py:25 msgid "Tiny Tiny RSS (Fork)" @@ -5735,44 +5810,38 @@ msgstr "Actualiser" #: plinth/modules/upgrades/__init__.py:38 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/forms.py:28 -#, fuzzy -#| msgid "Enable automatic upgrades" msgid "Enable auto-update" -msgstr "Activer les mises à niveau automatiques" +msgstr "Activer les mises à jour automatiques" #: plinth/modules/upgrades/forms.py:29 msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +"Une fois activé, FreedomBox se mettra à jour automatiquement une fois par " +"jour." #: plinth/modules/upgrades/templates/upgrades.html:45 -#, fuzzy -#| msgid "Update" msgid "Update now" -msgstr "Actualiser" +msgstr "Mettre à jour maintenant" #: plinth/modules/upgrades/templates/upgrades.html:54 msgid "Updating..." -msgstr "" +msgstr "Mise à jour…" #: plinth/modules/upgrades/templates/upgrades.html:59 -#, 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." 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 "" -"En fonction du nombre de paquets à installer, cette opération peut " -"prendre du temps. Pendant que les mises à niveau seront en cours " -"d'installation, vous ne pourrez pas installer d'autres paquets. Durant la " -"mise à niveau, cette interface web peut être temporairement indisponible et " -"afficher une erreur. Rafraîchissez la page pour continuer." +"Cette opération peut prendre du temps. Pendant que les " +"mises à niveau seront en cours d'installation, vous ne pourrez pas installer " +"d'autres paquets. Durant la mise à niveau, cette interface web peut être " +"temporairement indisponible et afficher une erreur. Dans ce cas, " +"rafraîchissez la page pour continuer." #: plinth/modules/upgrades/templates/upgrades.html:73 msgid "Toggle recent update logs" @@ -5782,7 +5851,7 @@ msgstr "" #: plinth/modules/upgrades/templates/upgrades_configure.html:27 #: plinth/modules/upgrades/views.py:107 msgid "Manual update" -msgstr "" +msgstr "Mise à jour manuelle" #: plinth/modules/upgrades/views.py:66 #, python-brace-format @@ -5819,6 +5888,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 "" +"Crée et gère les comptes-utilisateur. Ces comptes sont utilisés comme " +"mécanisme central d'authentification par la plupart des applications. " +"Certaines nécessitent en plus qu'un compte fasse partie d'un groupe pour " +"autoriser l'utilisateur à accéder à l'application." #: plinth/modules/users/__init__.py:55 #, python-brace-format @@ -5827,6 +5900,10 @@ msgid "" "relevant to them in the home page. However, only users of the admin " "group may alter apps or system settings." msgstr "" +"N'importe quel utilisateur peut se connecter à l'interface web de {box_name} " +"pour voir la liste des applications disponibles sur la page principale. En " +"revanche, seuls les utilisateurs du groupe admin pourront modifier " +"ces applications ou les paramètres-système." #: plinth/modules/users/__init__.py:123 #, python-brace-format @@ -5835,7 +5912,7 @@ msgstr "Vérification de l'entrée LDAP \"{search_item}\"" #: plinth/modules/users/forms.py:41 msgid "Access to all services and system settings" -msgstr "" +msgstr "Accès à tous les services et les configurations-système" #: plinth/modules/users/forms.py:57 msgid "Username is taken or is reserved." @@ -5843,7 +5920,7 @@ msgstr "Le nom d'utilisateur est déjà pris ou est réservé." #: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 msgid "Permissions" -msgstr "" +msgstr "Permissions" #: plinth/modules/users/forms.py:91 msgid "" @@ -5871,7 +5948,7 @@ msgstr "Échec de l'ajout d'un nouvel utilisateur au groupe {group}." #: plinth/modules/users/forms.py:150 msgid "Authorized SSH Keys" -msgstr "" +msgstr "Clés SSH autorisées" #: plinth/modules/users/forms.py:154 msgid "" @@ -5902,7 +5979,7 @@ msgstr "Impossible de définir les clés SSH." #: plinth/modules/users/forms.py:274 msgid "Cannot delete the only administrator in the system." -msgstr "" +msgstr "Impossible de supprimer le seul administrateur de ce système." #: plinth/modules/users/forms.py:306 msgid "Changing LDAP user password failed." @@ -6127,10 +6204,9 @@ msgid "Service %(service_name)s is not running." msgstr "Le service %(service_name)s n'est pas en fonctionnement." #: plinth/templates/base.html:50 -#, 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 "Interface d'administration Plinth pour %(box_name)s" +msgstr "Fonction centrale et interface web pour %(box_name)s" #: plinth/templates/base.html:96 msgid "Toggle navigation" @@ -6166,10 +6242,8 @@ msgid "Log out" msgstr "Se déconnecter" #: plinth/templates/base.html:195 plinth/templates/base.html:198 -#, fuzzy -#| msgid "Language" msgid "Select language" -msgstr "Langue" +msgstr "Choisir la langue" #: plinth/templates/base.html:203 plinth/templates/base.html:205 msgid "Log in" @@ -6177,15 +6251,15 @@ msgstr "S'identifier" #: plinth/templates/clients.html:29 msgid "Client Apps" -msgstr "" +msgstr "Applications clientes" #: plinth/templates/clients.html:40 msgid "Web" -msgstr "" +msgstr "Web" #: plinth/templates/clients.html:65 msgid "Desktop" -msgstr "" +msgstr "Bureau" #: plinth/templates/clients.html:76 msgid "GNU/Linux" @@ -6201,11 +6275,11 @@ msgstr "macOS" #: plinth/templates/clients.html:96 msgid "Mobile" -msgstr "" +msgstr "Mobile" #: plinth/templates/clients.html:107 msgid "Play Store" -msgstr "" +msgstr "Play Store" #: plinth/templates/clients.html:109 msgid "F-Droid" @@ -6213,7 +6287,7 @@ msgstr "F-Droid" #: plinth/templates/clients.html:111 msgid "App Store" -msgstr "" +msgstr "App Store" #: plinth/templates/clients.html:127 msgid "Package" @@ -6221,15 +6295,15 @@ msgstr "Paquet" #: plinth/templates/clients.html:134 msgid "Debian:" -msgstr "Debian:" +msgstr "Debian :" #: plinth/templates/clients.html:137 msgid "Homebrew:" -msgstr "" +msgstr "Homebrew :" #: plinth/templates/clients.html:140 msgid "RPM:" -msgstr "" +msgstr "RPM :" #: plinth/templates/first_setup.html:39 #, python-format @@ -6237,6 +6311,8 @@ msgid "" "Please wait for %(box_name)s to finish installation. You can start using " "your %(box_name)s once it is done." msgstr "" +"Veuillez attendre que %(box_name)s termine l’installation. Vous pourrez " +"utiliser votre %(box_name)s quand ce sera fait." #: plinth/templates/index.html:37 #, python-format @@ -6264,11 +6340,7 @@ msgstr "" "fournis respectent votre vie privée et vos données personnelles." #: plinth/templates/index.html:124 -#, 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, " @@ -6306,10 +6378,12 @@ msgstr "Liste de diffusion mail" #, python-format msgid "%(service_name)s is available only on internal networks." msgstr "" +"%(service_name)s n'est disponible que sur les réseaux internes." #: plinth/templates/internal-zone.html:32 msgid "Currently there are no network interfaces configured as internal." msgstr "" +"Il n'y a actuellement aucune interface-réseau configurée comme interne." #: plinth/templates/internal-zone.html:34 #, python-format @@ -6317,12 +6391,12 @@ msgid "" "Currently the following network interfaces are configured as internal: " "%(interface_list)s" msgstr "" +"Actuellement les interfaces-réseau suivantes sont configurées comme " +"internes : %(interface_list)s" #: plinth/templates/port-forwarding-info.html:23 -#, fuzzy -#| msgid "Enable forwarding" msgid "Port Forwarding" -msgstr "Activer la redirection" +msgstr "Redirection de port" #: plinth/templates/port-forwarding-info.html:26 #, python-format @@ -6331,6 +6405,9 @@ msgid "" "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/setup.html:39 msgid "Installation" @@ -6356,6 +6433,7 @@ msgstr "" #: plinth/templates/setup.html:85 msgid "This application is currently not available in your distribution." msgstr "" +"Cette application n'est actuellement pas disponible dans votre distribution." #: plinth/templates/setup.html:99 msgid "Install" @@ -6379,17 +6457,18 @@ msgstr "Installation de %(package_names)s: %(status)s" msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% effectué" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "Application activée" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "Application désactivée" #: plinth/web_framework.py:189 +#, fuzzy msgid "Gujarati" -msgstr "" +msgstr "Gujarati" #~ msgid "Only alphanumeric characters are allowed." #~ msgstr "Seuls les caractères alphanumériques sont autorisés." diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po index 100d70241..cdf69eadb 100644 --- a/plinth/locale/gl/LC_MESSAGES/django.po +++ b/plinth/locale/gl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2019-07-11 08:01+0000\n" "Last-Translator: Miguel A. Bouzada \n" "Language-Team: Galician any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -675,57 +682,43 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "Amosa aplicativos e funcións que requiren maior coñecemento técnico." -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "Configurar a páxina de inicio do servidor web" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -739,8 +732,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -966,7 +959,7 @@ msgstr "" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "" @@ -1168,7 +1161,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1428,39 +1421,40 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -msgid "Name of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -msgid "Repository's owner name" -msgstr "" - -#: plinth/modules/gitweb/forms.py:48 -msgid "Private repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +msgid "Name of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "" + +#: plinth/modules/gitweb/forms.py:63 +msgid "Private repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1533,44 +1527,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1674,6 +1668,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -1888,7 +1890,7 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1965,19 +1967,19 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2058,7 +2060,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "" @@ -3017,7 +3019,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -4410,6 +4412,17 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +msgid "Disable password authentication" +msgstr "" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" msgstr "" @@ -4428,6 +4441,14 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4436,7 +4457,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4525,27 +4546,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4553,9 +4574,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4567,32 +4588,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5515,11 +5536,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po index bcd99be94..2b5b850eb 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2018-02-05 18:37+0000\n" "Last-Translator: drashti kaushik \n" "Language-Team: Gujarati 1;\n" "X-Generator: Weblate 2.19-dev\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -380,7 +384,6 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -424,7 +427,7 @@ msgstr "" msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -634,7 +637,11 @@ msgstr "" "સાથે{box_name} લૉગિન દ્વારા ઍક્સેસ કરી શકાય છે. સંવેદનશીલ માહિતી અને વ્યવસ્થાપનની " "ક્ષમતાઓ એડમિન ગ્રૂપના વપરાશકર્તાઓ માટે મર્યાદિત છે." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "સામાન્ય ગોઠવણી" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -719,59 +726,45 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "સામાન્ય ગોઠવણી" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "હોસ્ટનું નામ સ્થાપિત કરતાં ભૂલ થઇ: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "હોસ્ટનું નામ સ્થાપિત કર્યું" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "ક્ષેત્રીય નામ સ્થાપિત કરતાં ભૂલ થઇ: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "ક્ષેત્રીય નામ સ્થાપિત કર્યું" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "હોસ્ટનું નામ સ્થાપિત કરતાં ભૂલ થઇ: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "ક્ષેત્રીય નામ સ્થાપિત કરતાં ભૂલ થઇ: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -785,8 +778,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -1031,7 +1024,7 @@ msgstr "સેટઅપ અપડેટ કરો" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "સેટિંગ યથાવત" @@ -1271,7 +1264,7 @@ msgstr "" msgid "Last update" msgstr "છેલ્લો સુધારો" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "વિશે" @@ -1569,45 +1562,46 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Documentation" -msgid "Name of the repository" -msgstr "દસ્તાવેજીકરણ" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -msgid "Repository's owner name" -msgstr "" - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Documentation" -msgid "Private repository" -msgstr "દસ્તાવેજીકરણ" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "અમાન્ય હોસ્ટનું નામ" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +#, fuzzy +#| msgid "Documentation" +msgid "Name of the repository" +msgstr "દસ્તાવેજીકરણ" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "" + +#: plinth/modules/gitweb/forms.py:63 +#, fuzzy +#| msgid "Documentation" +msgid "Private repository" +msgstr "દસ્તાવેજીકરણ" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1686,44 +1680,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "માર્ગદર્શિકા" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1827,6 +1821,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2045,7 +2047,7 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -2122,19 +2124,19 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2215,7 +2217,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "" @@ -3192,7 +3194,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -4588,6 +4590,19 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "HTTP મૂળભૂત પ્રમાણીકરણનો ઉપયોગ કરો" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "Server Administration" @@ -4608,6 +4623,14 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4616,7 +4639,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4705,27 +4728,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4733,9 +4756,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4747,32 +4770,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5711,11 +5734,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "એપ્લિકેશન સક્ષમ કરો" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "એપ્લિકેશન અક્ષમ છે" diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po index 1930df23f..e01426a77 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2018-08-09 20:39+0000\n" "Last-Translator: Gayathri Das \n" "Language-Team: Hindi 1;\n" "X-Generator: Weblate 3.2-dev\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -400,7 +404,6 @@ msgid "Delete Archive %(name)s" msgstr "पुरालेख हटाईये %(name)s" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -450,7 +453,7 @@ msgstr "रीस्‍टोर" msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -677,7 +680,11 @@ msgstr "" "माैजूद होते है. यह कोई से एक {box_name} के सात पहुंच " "सकते हैं. निजी जानकारी आैर सिस्टम बदलने का योग्यता सिर्फ व्यवस्थापक लोग के पास है." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "सामान्य कॉन्फ़िगरेशन" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -776,59 +783,45 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "और सीखिये..." - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "सामान्य कॉन्फ़िगरेशन" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "{exception}: होस्ट नाम सेट करने में एरर" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "होस्ट नाम सेट हो गया" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "{exception}: डोमेन नाम सेट करने में एरर" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "डोमेन नाम सेट हो गया है" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "{exception}: होस्ट नाम सेट करने में एरर" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "{exception}: डोमेन नाम सेट करने में एरर" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -841,9 +834,14 @@ msgid "File Sharing" msgstr "फ़ाइल शेयरइंग" #: plinth/modules/coquelicot/__init__.py:45 +#, 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 " +"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 "" "कोकेलिकॉट एक \"एक-क्लिक\" फ़ाइल शेयरइंग वेब एप्लिकेशन है जिसमे एकांत पर फोकस है. यह जल्दी " @@ -1090,7 +1088,7 @@ msgstr "सेटअप अपडेट" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "सेटिंग स्थिर है" @@ -1330,7 +1328,7 @@ msgstr "" msgid "Last update" msgstr "अंतिम अपडेट" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "के बारे में" @@ -1625,13 +1623,20 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 +#: plinth/modules/gitweb/forms.py:40 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid repository name." +msgstr "अमान्य होस्टनाम" + +#: plinth/modules/gitweb/forms.py:47 #, fuzzy #| msgid "Name of the share" msgid "Name of the repository" msgstr "शेयर का नाम" -#: plinth/modules/gitweb/forms.py:36 +#: plinth/modules/gitweb/forms.py:51 #, fuzzy #| msgid "" #| "A lowercase alpha-numeric string that uniquely identifies a share. " @@ -1641,35 +1646,29 @@ msgstr "" "कोई लोअरकेस अल्फ़ा-सांख्यिक स्ट्रिंग जो विशिष्ट रूप से एक शेयर की पहचान करता है. उदाहरण:" "media." -#: plinth/modules/gitweb/forms.py:40 +#: plinth/modules/gitweb/forms.py:55 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:48 +#: plinth/modules/gitweb/forms.py:63 #, fuzzy #| msgid "Create User" msgid "Private repository" msgstr "यूसर बनाये" -#: plinth/modules/gitweb/forms.py:49 +#: plinth/modules/gitweb/forms.py:64 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy -#| msgid "Invalid hostname" -msgid "Invalid repository name." -msgstr "अमान्य होस्टनाम" - -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "A share with this name already exists." msgid "A repository with this name already exists." @@ -1757,44 +1756,44 @@ msgstr "{name} हटा गया है." msgid "Could not delete {name}: {error}" msgstr "{name} नहीं हटा गया है: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "प्रलेखन" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "मैन्युअल" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "प्रलेखन और एफ़एक्यू" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "{box_name} के बारे में" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} मैनुअल" @@ -1914,6 +1913,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "और सीखिये..." + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2163,7 +2170,7 @@ msgstr "विकी एप्लिकेशन को देखें और #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "टाइप" @@ -2244,19 +2251,19 @@ msgstr "{name} हटा गया है." msgid "Could not delete {title}: {error}" msgstr "{name} नहीं हटा गया है: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "इन्फिनोटेड़" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "गोबी सर्वर" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "इन्फिनोटेड़ गोबी के एक सर्वर है, एक सहयोगी टेक्स्ट संपादक." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2350,7 +2357,7 @@ msgid "Website Security" msgstr "वेबसईट सुरक्षा" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "एक्सआयन" @@ -3409,7 +3416,7 @@ msgid "yes" msgstr "हाँ" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "यंत्र" @@ -5010,6 +5017,19 @@ msgstr "" "स्वीकार करने के लिये. एक अधिकार दिया गया रिमोट कंप्यूटर प्रशासन कार्य निष्पादित कर " "सकता है, फ़ाइलों की कॉपी कर सकता है या ऐसे कनेक्शंस का उपयोग करके अंय सर्विसस चलाएे." +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "एचटिटिपि बेसिकॅ प्रमाणीकरण उपयोग करें" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "SSH Fingerprint" @@ -5032,6 +5052,14 @@ msgstr "" msgid "Fingerprint" msgstr "SSH फिंगरप्रिंट" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "एकल साइन-ऑन" @@ -5040,7 +5068,7 @@ msgstr "एकल साइन-ऑन" msgid "Login" msgstr "लॉगिन" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "स्टोरेज" @@ -5129,29 +5157,29 @@ msgstr "अनुरोधित विकल्प का उपयोग क msgid "The device is mounted by another user." msgstr "किसी और यूसर ने डिवाइस माउंट किया गया है." -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" msgid "The following storage devices are in use:" msgstr "निम्नलिखित डिस्कस उपयोग में है:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "लेबल" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "माउन्ट प्वाइंट" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "उपयोग किया गया" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "पारटिशन एक्सपांसन" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5162,9 +5190,9 @@ msgstr "" "पार्टीशन इस स्थान ज्यादा बनने के लिए उपयोग किया जा सकता है. यह आपको आपकी फ़ाइलों " "स्टोर करने के लिए अतिरिक्त मुक्त स्थान प्रदान करेगा." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "रूट पारटिशन विस्तार करें" @@ -5178,16 +5206,16 @@ msgstr "" "आगे बढ़ने से पहले अपने डेटा का बैकअप करें. इस ऑपरेशन के बाद, %(expandable_root_size)s से " "अतिरिक्त खाली जगह आपके रूट पार्टीशन में उपलब्ध होगा." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "पार्टीशन का विस्तार करने में त्रुटि: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "पार्टीशन सफलतापूर्वक विस्तारित हुआ." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " @@ -5196,16 +5224,16 @@ msgstr "" "वार्निंग: सिस्टम पार्टीशन पर कम जगह ({percent_used}% उपयोग किया गया, " "{free_space} free)." -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "{drive_vendor}{drive_model} को सुरक्षित रूप से अनप्लग किया जा सकता है." -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "डिवाइस सुरक्षित रूप से अनप्लग किया जा सकता है." -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "एेरर इजेक्टिग्न डिवाइस: {error_message}" @@ -6228,11 +6256,11 @@ msgstr "%(package_names)s:%(status)s इंस्टॉलेशन किया msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% पूर्ण" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "एप्लीकेशन सक्षम किया गया है" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "एप्लीकेशन अक्षम किया गया है" diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index 894117207..0a5238024 100644 --- a/plinth/locale/hu/LC_MESSAGES/django.po +++ b/plinth/locale/hu/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" -"PO-Revision-Date: 2019-08-31 09:24+0000\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" +"PO-Revision-Date: 2019-10-31 23:03+0000\n" "Last-Translator: Doma Gergő \n" "Language-Team: Hungarian \n" @@ -17,7 +17,11 @@ msgstr "" "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.9-dev\n" +"X-Generator: Weblate 3.10-dev\n" + +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" #: plinth/action_utils.py:298 #, python-brace-format @@ -225,11 +229,11 @@ msgstr "Jelszó szükséges a titkosításhoz." #: plinth/modules/backups/forms.py:189 msgid "Select Disk or Partition" -msgstr "" +msgstr "Válaszd ki a lemezt vagy partíciót" #: plinth/modules/backups/forms.py:190 msgid "Backups will be stored in the directory FreedomBoxBackups" -msgstr "" +msgstr "A biztonsági mentések a FreedomBoxBackups könyvtárban lesznek tárolva" #: plinth/modules/backups/forms.py:199 msgid "SSH Repository Path" @@ -295,7 +299,7 @@ msgstr "" #: plinth/modules/backups/repository.py:154 msgid "Existing repository is not encrypted." -msgstr "" +msgstr "A meglévő tároló nem titkosított." #: plinth/modules/backups/repository.py:342 #, python-brace-format @@ -320,26 +324,20 @@ msgid "Upload and Restore" msgstr "Feltöltés és visszaállítás" #: plinth/modules/backups/templates/backups.html:59 -#, fuzzy -#| msgid "Add a remote backup location" msgid "Add a backup location" -msgstr "Távoli biztonsági másolat helyének megadása" +msgstr "Biztonsági másolat helyének megadása" #: plinth/modules/backups/templates/backups.html:63 -#, fuzzy -#| msgid "Add a remote backup location" msgid "Add Backup Location" -msgstr "Távoli biztonsági másolat helyének megadása" +msgstr "Biztonsági másolat helyének megadása" #: plinth/modules/backups/templates/backups.html:66 msgid "Add a remote backup location" msgstr "Távoli biztonsági másolat helyének megadása" #: plinth/modules/backups/templates/backups.html:70 -#, fuzzy -#| msgid "Add a remote backup location" msgid "Add Remote Backup Location" -msgstr "Távoli biztonsági másolat helyének megadása" +msgstr "Biztonsági másolat helyének megadása" #: plinth/modules/backups/templates/backups.html:73 msgid "Existing Backups" @@ -387,7 +385,6 @@ msgid "Delete Archive %(name)s" msgstr "%(name)s archívum törlése" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -430,11 +427,19 @@ msgid "Restoring" msgstr "Visszaállítás" #: plinth/modules/backups/templates/backups_upload.html:32 -#, python-format +#, 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" +#| " " msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -515,13 +520,11 @@ msgstr "Visszaállítás a feltöltött fájlból" #: plinth/modules/backups/views.py:255 msgid "No additional disks available to add a repository." -msgstr "" +msgstr "Nincs további lemez amit a tárolóhoz lehetne adni." #: plinth/modules/backups/views.py:263 -#, fuzzy -#| msgid "Create remote backup repository" msgid "Create backup repository" -msgstr "Távoli biztonsági másolat tároló létrehozása" +msgstr "Biztonsági másolat tároló létrehozása" #: plinth/modules/backups/views.py:290 msgid "Create remote backup repository" @@ -564,12 +567,8 @@ msgid "Remove Repository" msgstr "Tároló eltávolítása" #: plinth/modules/backups/views.py:419 -#, fuzzy -#| msgid "Repository removed. The remote backup itself was not deleted." msgid "Repository removed. Backups were not deleted." -msgstr "" -"Tároló eltávolítva. Viszont maga a távoli biztonsági mentés nem lett " -"kitörölve." +msgstr "Tároló eltávolítva. A biztonsági mentések nem lettek törölve." #: plinth/modules/backups/views.py:429 msgid "Unmounting failed!" @@ -665,7 +664,11 @@ msgstr "" "bármely adminisztrátori csoportba tartozó felhasználója." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Általános beállítások" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -758,57 +761,43 @@ msgstr "Haladó szintű alkalmazások és funkciók mutatása" 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." -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "Bővebben..." - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Általános beállítások" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Hiba az állomásnév beállítása közben: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "Állomásnév beállítva" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Hiba a domain név beállítása közben: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "Domain név beállítva" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Hiba a webkiszolgáló kezdőoldalának beállítása közben: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "Webkiszolgáló kezdőoldal beállítva" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Hiba a haladó módba váltás során: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "Haladó szintű alkalmazások és funkciók megjelenítése" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "Haladó szintű alkalmazások és funkciók elrejtése" @@ -821,9 +810,14 @@ msgid "File Sharing" msgstr "Fájlmegosztás" #: plinth/modules/coquelicot/__init__.py:45 +#, 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 " +"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 " @@ -1081,7 +1075,7 @@ msgstr "Beállítások frissítése" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "A beállítás változatlan" @@ -1334,7 +1328,7 @@ msgstr "" msgid "Last update" msgstr "Legutolsó frissítés" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Leírás" @@ -1605,11 +1599,11 @@ msgstr "Beállítás kész" #: plinth/modules/gitweb/__init__.py:41 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" -msgstr "" +msgstr "Gitweb" #: plinth/modules/gitweb/__init__.py:43 msgid "Simple Git Hosting" -msgstr "" +msgstr "Egyszerű Git hoszting" #: plinth/modules/gitweb/__init__.py:46 msgid "" @@ -1632,13 +1626,20 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 +#: plinth/modules/gitweb/forms.py:40 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid repository name." +msgstr "Érvénytelen állomásnév" + +#: plinth/modules/gitweb/forms.py:47 #, fuzzy #| msgid "Name of the share" msgid "Name of the repository" msgstr "Megosztás neve" -#: plinth/modules/gitweb/forms.py:36 +#: plinth/modules/gitweb/forms.py:51 #, fuzzy #| msgid "" #| "A lowercase alpha-numeric string that uniquely identifies a share. " @@ -1648,39 +1649,33 @@ msgstr "" "Kisbetűkből és számokból álló szöveg ami egyedien azonosítja a megosztást. " "Példa: media." -#: plinth/modules/gitweb/forms.py:40 +#: plinth/modules/gitweb/forms.py:55 #, fuzzy #| msgid "Create new repository" msgid "Description of the repository" msgstr "Új tároló létrehozása" -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Repository removed." msgid "Repository's owner name" msgstr "Tároló eltávolítva." -#: plinth/modules/gitweb/forms.py:48 +#: plinth/modules/gitweb/forms.py:63 #, fuzzy #| msgid "Create Repository" msgid "Private repository" msgstr "Tároló létrehozása" -#: plinth/modules/gitweb/forms.py:49 +#: plinth/modules/gitweb/forms.py:64 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy -#| msgid "Invalid hostname" -msgid "Invalid repository name." -msgstr "Érvénytelen állomásnév" - -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "A share with this name already exists." msgid "A repository with this name already exists." @@ -1772,44 +1767,44 @@ msgstr "{name} törölve." msgid "Could not delete {name}: {error}" msgstr "{name} nem törölhető: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "Dokumentáció" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Kézikönyv" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "Dokumentáció és GYIK" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "A {box_name} projektről" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} kézikönyv" @@ -1939,6 +1934,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "Bővebben..." + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2202,7 +2205,7 @@ msgstr "Wiki alkalmazások megtekintése és szerkesztése" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Típus" @@ -2283,20 +2286,20 @@ msgstr "{name} törölve." msgid "Could not delete {title}: {error}" msgstr "{name} nem törölhető: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "Gobby kiszolgáló" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted egy kiszolgáló a Gobby-hoz, a kollaboratív szövegszerkesztőhöz." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2396,7 +2399,7 @@ msgid "Website Security" msgstr "Webhelybiztonság" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Műveletek" @@ -3498,7 +3501,7 @@ msgid "yes" msgstr "igen" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Eszköz" @@ -5149,6 +5152,19 @@ 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/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "HTTP alap hitelesítés használata" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "SSH Fingerprint" @@ -5171,6 +5187,16 @@ msgstr "" msgid "Fingerprint" msgstr "SSH ujjlenyomat" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "SSH authentication with password enabled." +msgstr "Sikertelen a hitelesítés a távoli kiszolgálóra." + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "Egyszeri bejelentkezés" @@ -5179,7 +5205,7 @@ msgstr "Egyszeri bejelentkezés" msgid "Login" msgstr "Bejelentkezés" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "Háttértár" @@ -5275,27 +5301,27 @@ msgstr "Nem használhatja a kért lehetőséget." msgid "The device is mounted by another user." msgstr "Az eszközt egy másik felhasználó felcsatolva." -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "A következő tárolóeszközök vannak használatban:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "Címke" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "Csatolási pont" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Felhasznált" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Partíció kibővítése" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5306,9 +5332,9 @@ msgstr "" "követően. A root partíció kibővíthető erre a területre. Ez további szabad " "területet biztosíthat a fájljaid tárolásához." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "Root partíció kibővítése" @@ -5323,16 +5349,16 @@ msgstr "" "után %(expandable_root_size)s további szabad tárterület lesz elérhető a root " "partíción." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "Hiba a partíció kibővítése során: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "A partíció kibővítése sikerült." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " @@ -5341,16 +5367,16 @@ msgstr "" "Figyelmeztetés: Kevés a szabad hely a rendszerpartíción ({percent_used}% " "felhasználva, {free_space} szabad)." -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "{drive_vendor} {drive_model} biztonságosan kivehető." -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "Az eszköz biztonságosan kivehető." -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "Hiba történt az eszköz kiadása során: {error_message}" @@ -6399,11 +6425,11 @@ msgstr "%(package_names)s telepítése: %(status)s" msgid "%(percentage)s%% complete" msgstr "befejezettségi szint: %(percentage)s%%" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "Alkalmazás engedélyezve" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "Alkalmazás letiltva" diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po index ad2b1d1f9..676ee5f8f 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2018-11-02 00:44+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Indonesian any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Konfigurasi Umum" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -724,61 +731,45 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -#, fuzzy -#| msgid "Learn more »" -msgid "Learn more..." -msgstr "Pelajari lainnya »" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Konfigurasi Umum" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Kesalahan pengaturan nama domain: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "Kesalahan pengaturan nama domain: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "Kesalahan pengaturan nama domain: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -792,8 +783,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -1023,7 +1014,7 @@ msgstr "" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "" @@ -1225,7 +1216,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Tentang" @@ -1493,43 +1484,44 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 +#: plinth/modules/gitweb/forms.py:40 +msgid "Invalid repository name." +msgstr "" + +#: plinth/modules/gitweb/forms.py:47 #, fuzzy #| msgid "Actions" msgid "Name of the repository" msgstr "Aksi" -#: plinth/modules/gitweb/forms.py:36 +#: plinth/modules/gitweb/forms.py:51 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" -#: plinth/modules/gitweb/forms.py:40 +#: plinth/modules/gitweb/forms.py:55 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:48 +#: plinth/modules/gitweb/forms.py:63 #, fuzzy #| msgid "Actions" msgid "Private repository" msgstr "Aksi" -#: plinth/modules/gitweb/forms.py:49 +#: plinth/modules/gitweb/forms.py:64 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:66 -msgid "Invalid repository name." -msgstr "" - -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1613,44 +1605,44 @@ msgstr "{name} dihapus." msgid "Could not delete {name}: {error}" msgstr "Tidak dapat menghapus {name}: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Panduan" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "Dokumentasi dan Tanya Jawab" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "Tentang {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "Panduan {box_name}" @@ -1756,6 +1748,16 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +#, fuzzy +#| msgid "Learn more »" +msgid "Learn more..." +msgstr "Pelajari lainnya »" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -1986,7 +1988,7 @@ msgstr "Layanan dan Aplikasi" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Tipe" @@ -2065,21 +2067,21 @@ msgstr "{name} dihapus." msgid "Could not delete {title}: {error}" msgstr "Tidak dapat menghapus {name}: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" msgstr "Server Web" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2162,7 +2164,7 @@ msgid "Website Security" msgstr "Keamanan Website" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Aksi" @@ -3162,7 +3164,7 @@ msgid "yes" msgstr "ya" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Perangkat" @@ -4617,6 +4619,19 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "Gunakan autentikasi dasar HTTP" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "SSH Fingerprint" @@ -4639,6 +4654,14 @@ msgstr "" msgid "Fingerprint" msgstr "Sidik Jari SSH" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4647,7 +4670,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4741,27 +4764,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "Mount Point" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Digunakan" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4769,9 +4792,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4783,32 +4806,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5757,11 +5780,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po index fcb04067d..ca9e77c9c 100644 --- a/plinth/locale/it/LC_MESSAGES/django.po +++ b/plinth/locale/it/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2019-09-03 21:24+0000\n" "Last-Translator: Swann Martinet \n" "Language-Team: Italian download Gobby, desktop " @@ -2367,7 +2374,7 @@ msgid "Website Security" msgstr "Sicurezza Sito Web" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Azioni" @@ -3446,7 +3453,7 @@ msgid "yes" msgstr "si" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Dispositivo" @@ -4962,6 +4969,18 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +msgid "Disable password authentication" +msgstr "Usa l'autenticazione HTTP base" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "SSH Fingerprint" @@ -4984,6 +5003,14 @@ msgstr "" msgid "Fingerprint" msgstr "SSH Fingerprint" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4992,7 +5019,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -5081,27 +5108,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5109,9 +5136,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -5123,32 +5150,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -6076,11 +6103,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% completata" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "Applicazione abilitata" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "Applicazione disabilitata" diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po index 44384c45b..d9059d471 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,6 +18,10 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -358,7 +362,6 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -400,7 +403,7 @@ msgstr "" msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -596,7 +599,11 @@ msgid "" "\"{users_url}\">any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -672,57 +679,43 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -736,8 +729,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -963,7 +956,7 @@ msgstr "" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "" @@ -1165,7 +1158,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1425,39 +1418,40 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -msgid "Name of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -msgid "Repository's owner name" -msgstr "" - -#: plinth/modules/gitweb/forms.py:48 -msgid "Private repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +msgid "Name of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "" + +#: plinth/modules/gitweb/forms.py:63 +msgid "Private repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1530,44 +1524,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1671,6 +1665,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -1885,7 +1887,7 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1962,19 +1964,19 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2055,7 +2057,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "" @@ -3014,7 +3016,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -4407,6 +4409,17 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +msgid "Disable password authentication" +msgstr "" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" msgstr "" @@ -4425,6 +4438,14 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4433,7 +4454,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4522,27 +4543,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4550,9 +4571,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4564,32 +4585,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5512,11 +5533,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po index 44384c45b..d9059d471 100644 --- a/plinth/locale/kn/LC_MESSAGES/django.po +++ b/plinth/locale/kn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,6 +18,10 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -358,7 +362,6 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -400,7 +403,7 @@ msgstr "" msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -596,7 +599,11 @@ msgid "" "\"{users_url}\">any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -672,57 +679,43 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -736,8 +729,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -963,7 +956,7 @@ msgstr "" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "" @@ -1165,7 +1158,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1425,39 +1418,40 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -msgid "Name of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -msgid "Repository's owner name" -msgstr "" - -#: plinth/modules/gitweb/forms.py:48 -msgid "Private repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +msgid "Name of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "" + +#: plinth/modules/gitweb/forms.py:63 +msgid "Private repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1530,44 +1524,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1671,6 +1665,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -1885,7 +1887,7 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1962,19 +1964,19 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2055,7 +2057,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "" @@ -3014,7 +3016,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -4407,6 +4409,17 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +msgid "Disable password authentication" +msgstr "" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" msgstr "" @@ -4425,6 +4438,14 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4433,7 +4454,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4522,27 +4543,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4550,9 +4571,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4564,32 +4585,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5512,11 +5533,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po index d504103dd..e0b15fe8d 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,6 +19,10 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" "%100<10 || n%100>=20) ? 1 : 2);\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -359,7 +363,6 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -401,7 +404,7 @@ msgstr "" msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -597,7 +600,11 @@ msgid "" "\"{users_url}\">any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -673,57 +680,43 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -737,8 +730,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -964,7 +957,7 @@ msgstr "" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "" @@ -1166,7 +1159,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1426,39 +1419,40 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -msgid "Name of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -msgid "Repository's owner name" -msgstr "" - -#: plinth/modules/gitweb/forms.py:48 -msgid "Private repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +msgid "Name of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "" + +#: plinth/modules/gitweb/forms.py:63 +msgid "Private repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1531,44 +1525,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1672,6 +1666,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -1886,7 +1888,7 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1963,19 +1965,19 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2056,7 +2058,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "" @@ -3015,7 +3017,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -4408,6 +4410,17 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +msgid "Disable password authentication" +msgstr "" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" msgstr "" @@ -4426,6 +4439,14 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4434,7 +4455,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4523,27 +4544,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4551,9 +4572,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4565,32 +4586,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5513,11 +5534,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index b42f9a78d..20f1befc4 100644 --- a/plinth/locale/nb/LC_MESSAGES/django.po +++ b/plinth/locale/nb/LC_MESSAGES/django.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" -"PO-Revision-Date: 2019-10-21 00:52+0000\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" +"PO-Revision-Date: 2019-10-26 17:53+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål \n" @@ -27,6 +27,10 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.9.1-dev\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -389,7 +393,6 @@ msgid "Delete Archive %(name)s" msgstr "Slett arkiv %(name)s" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -433,11 +436,19 @@ msgid "Restoring" msgstr "Gjenoppretter" #: plinth/modules/backups/templates/backups_upload.html:32 -#, python-format +#, 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" +#| " " msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -660,7 +671,11 @@ msgstr "" "a>-banen på nettjeneren. Den kan brukes av enhver " "bruker på {box_name} som er medlem i admin-gruppen." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Generelt oppsett" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -751,57 +766,43 @@ msgstr "Vis avanserte programmer og funksjoner" msgid "Show apps and features that require more technical knowledge." msgstr "Vis programmer og funksjoner som krever dypere teknisk innsikt." -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "Lær mer…" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Generelt oppsett" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Feil ved setting av vertsnavn: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "Vertsnavn satt" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Feil ved innstilling/setting av domenenavn: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "Domenenavn satt" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Feil ved setting av nettstedets hjemmeside: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "Webtjenerforside satt" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Feil ved bytte til avansert modus: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "Viser avanserte programmer og funksjoner" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "Viser ikke avanserte programmer og funksjoner" @@ -814,9 +815,14 @@ msgid "File Sharing" msgstr "Fildeling" #: plinth/modules/coquelicot/__init__.py:45 +#, 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 " +"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å " @@ -1071,7 +1077,7 @@ msgstr "Oppdater oppsett" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "Oppsett uendret" @@ -1316,7 +1322,7 @@ msgstr "" msgid "Last update" msgstr "Siste oppdatering" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Om" @@ -1611,13 +1617,20 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 +#: plinth/modules/gitweb/forms.py:40 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid repository name." +msgstr "Ugyldig vertsnavn" + +#: plinth/modules/gitweb/forms.py:47 #, fuzzy #| msgid "Name of the share" msgid "Name of the repository" msgstr "Navn på delt område" -#: plinth/modules/gitweb/forms.py:36 +#: plinth/modules/gitweb/forms.py:51 #, fuzzy #| msgid "" #| "A lowercase alpha-numeric string that uniquely identifies a share. " @@ -1627,39 +1640,33 @@ msgstr "" "En alfanumerisk streng med små bokstaver som unikt identifiserer en deling. " "Eksempel media." -#: plinth/modules/gitweb/forms.py:40 +#: plinth/modules/gitweb/forms.py:55 #, fuzzy #| msgid "Create new repository" msgid "Description of the repository" msgstr "Opprett nytt depot" -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Repository removed." msgid "Repository's owner name" msgstr "Depot fjernet." -#: plinth/modules/gitweb/forms.py:48 +#: plinth/modules/gitweb/forms.py:63 #, fuzzy #| msgid "Create Repository" msgid "Private repository" msgstr "Opprett depot" -#: plinth/modules/gitweb/forms.py:49 +#: plinth/modules/gitweb/forms.py:64 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy -#| msgid "Invalid hostname" -msgid "Invalid repository name." -msgstr "Ugyldig vertsnavn" - -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "A share with this name already exists." msgid "A repository with this name already exists." @@ -1667,7 +1674,7 @@ msgstr "En deling ved dette navnet finnes allerede." #: plinth/modules/gitweb/manifest.py:36 msgid "Git" -msgstr "" +msgstr "Git" #: plinth/modules/gitweb/templates/gitweb_configure.html:41 #: plinth/modules/gitweb/templates/gitweb_configure.html:43 @@ -1751,44 +1758,44 @@ msgstr "Slettet {name}." msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "Dokumentasjon" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "Få støtte" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "Send inn tilbakemeldinger" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "Bidra" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "Dokumentasjon og ofte stilte spørsmål" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "Om {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Manual" @@ -1927,6 +1934,14 @@ msgstr "" "forretningskontakter, og sprer budskapet rundt omkring i verden. FreedomBox-" "stiftelsen ville ikke eksistert uten dens støttespillere." +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "Lær mer…" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2204,7 +2219,7 @@ msgstr "Vis og rediger wiki-programmer" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Type" @@ -2285,19 +2300,19 @@ msgstr "Slettet {name}." msgid "Could not delete {title}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "Gobby-tjener" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted er en tjener for Gobby, en samskrivende teksteditor." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2394,7 +2409,7 @@ msgid "Website Security" msgstr "Nettstedssikkerhet" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Handlinger" @@ -3484,7 +3499,7 @@ msgid "yes" msgstr "Ja" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Enhet" @@ -5111,6 +5126,19 @@ msgstr "" "annensteds hen kan utføre administrasjonsoppgaver, kopiere filer eller kjøre " "andre tjenester ved bruk av slike tilkoblinger." +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "Bruk HTTP-basisgodkjenning" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "SSH Fingerprint" @@ -5125,7 +5153,7 @@ msgstr "" #: plinth/modules/ssh/templates/ssh.html:38 msgid "Algorithm" -msgstr "" +msgstr "Algoritme" #: plinth/modules/ssh/templates/ssh.html:39 #, fuzzy @@ -5133,6 +5161,16 @@ msgstr "" msgid "Fingerprint" msgstr "SSH Fingeravtrykk" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "SSH authentication with password enabled." +msgstr "Identitetsbekreftelse til fjerntjener mislyktes." + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "Engangspålogging" @@ -5141,7 +5179,7 @@ msgstr "Engangspålogging" msgid "Login" msgstr "Login" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "Lager" @@ -5234,27 +5272,27 @@ msgstr "Mangler rettigheter til bruk av forespurt valg." msgid "The device is mounted by another user." msgstr "Enheten er montert av en annen bruker." -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "Følgende lagringsenheter er i bruk:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "Merkelapp" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "Monteringspunkt" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Brukt" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Partisjonsutvidelse" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5265,9 +5303,9 @@ msgstr "" "root-partisjonen din. Root-partisjonen kan utvides til å bruke denne " "plassen. Det vil gi deg mer plass til å lagre filene dine." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "Utvid root-partisjon" @@ -5282,16 +5320,16 @@ msgstr "" "operasjonen vil det være %(expandable_root_size)s med ekstra plass " "tilgjengelig på root-partisjonen din." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "Utviding av partisjon feilet: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "Vellykket partisjonsutvidelse." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " @@ -5300,16 +5338,16 @@ msgstr "" "Advarsel: Lite plass igjen på systempartisjon ({percent_used}% brukt, " "{free_space} ledig)." -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "{drive_vendor} {drive_model} kan trygt kobles fra." -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "Enheten kan trygt kobles fra." -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "Feil ved utløsing av enhet: {error_message}" @@ -6348,11 +6386,11 @@ msgstr "Installere %(package_names)s: %(status)s" msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% fullført" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "Programmet er aktivert" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "Programmet er deaktivert" diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index a1b082331..f5062c37a 100644 --- a/plinth/locale/nl/LC_MESSAGES/django.po +++ b/plinth/locale/nl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2019-10-15 22:52+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Dutch iedere gebruiker op {box_name} die lid is van de " "systeembeheerdergroep (admin)." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Algemene Instellingen" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -714,58 +721,44 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "Lees meer..." - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Algemene Instellingen" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Hostnaam instellen mislukt: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "Hostnaam ingesteld" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Domeinnaam instellen mislukt: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "Domeinnaam ingesteld" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" "Fout bij het instellen van de startpagina van de webserver: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "Startpagina van webserver ingesteld" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Fout bij het wijzigen van de geavanceerde modus: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "Geavanceerde applicaties en functies verbergen" @@ -778,9 +771,14 @@ msgid "File Sharing" msgstr "Delen van bestanden" #: plinth/modules/coquelicot/__init__.py:45 +#, 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 " +"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 " @@ -1035,7 +1033,7 @@ msgstr "Instelling bijwerken" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "Instelling onveranderd" @@ -1282,7 +1280,7 @@ msgstr "" msgid "Last update" msgstr "Laatste bijwerking" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Over" @@ -1578,13 +1576,20 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 +#: plinth/modules/gitweb/forms.py:40 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid repository name." +msgstr "Foutieve hostnaam" + +#: plinth/modules/gitweb/forms.py:47 #, fuzzy #| msgid "Name of the share" msgid "Name of the repository" msgstr "Naam van de gedeelde bron" -#: plinth/modules/gitweb/forms.py:36 +#: plinth/modules/gitweb/forms.py:51 #, fuzzy #| msgid "" #| "A lowercase alpha-numeric string that uniquely identifies a share. " @@ -1594,37 +1599,31 @@ msgstr "" "Een aaneengesloten reeks van kleine letters en/of cijfers, die " "bestandsdeling aanduidt. Bijvoorbeeld: media." -#: plinth/modules/gitweb/forms.py:40 +#: plinth/modules/gitweb/forms.py:55 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Repository removed." msgid "Repository's owner name" msgstr "Repository verwijderd." -#: plinth/modules/gitweb/forms.py:48 +#: plinth/modules/gitweb/forms.py:63 #, fuzzy #| msgid "Create Repository" msgid "Private repository" msgstr "Maak Repository" -#: plinth/modules/gitweb/forms.py:49 +#: plinth/modules/gitweb/forms.py:64 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy -#| msgid "Invalid hostname" -msgid "Invalid repository name." -msgstr "Foutieve hostnaam" - -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "A share with this name already exists." msgid "A repository with this name already exists." @@ -1716,44 +1715,44 @@ msgstr "{name} verwijderd." msgid "Could not delete {name}: {error}" msgstr "Verwijderen van {name} mislukt: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "Documentatie" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Handmatig" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "Ondersteuning krijgen" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "Feedback indienen" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "Bijdragen" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "Documentatie en veelgestelde vragen" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "Over {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Handleiding" @@ -1878,6 +1877,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "Lees meer..." + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2128,7 +2135,7 @@ msgstr "Bekijken en bewerken van wiki toepassingen" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Type" @@ -2209,21 +2216,21 @@ msgstr "{name} verwijderd." msgid "Could not delete {title}: {error}" msgstr "Verwijderen van {name} mislukt: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "Gobby Server" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted is een server voor Gobby, een tekst-editor voor gezamenlijk " "gebruik." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2322,7 +2329,7 @@ msgid "Website Security" msgstr "Websitebeveiliging" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Acties" @@ -3402,7 +3409,7 @@ msgid "yes" msgstr "ja" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Apparaat" @@ -5007,6 +5014,19 @@ msgstr "" "andere locatie die daarvoor geautoriseerd is, kan beheerdertaken uitvoeren, " "bestanden kopiëren en andere taken verrichten door zulk een verbinding." +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "Gebruik HTTP-basisverificatie" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "SSH Fingerprint" @@ -5029,6 +5049,14 @@ msgstr "" msgid "Fingerprint" msgstr "SSH Vingerafdruk" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "Eenmalige aanmelding" @@ -5037,7 +5065,7 @@ msgstr "Eenmalige aanmelding" msgid "Login" msgstr "Aanmelding" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "Storage" @@ -5126,27 +5154,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "De volgende opslagapparaten zijn in gebruik:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "Label" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "Koppelpunt" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Gebruikt" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Partitie Vergroting" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5158,9 +5186,9 @@ msgstr "" "worden gebruikt. Dit geeft u extra vrije ruimte voor het opslaan van " "bestanden." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "Root-partitie uitbreiden" @@ -5175,16 +5203,16 @@ msgstr "" "%(expandable_root_size)s extra vrije ruimte in de root-partitie beschikbaar " "zijn." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "Fout bij partitie uitbreiden: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "Partitie succesvol uitgebreid." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " @@ -5193,16 +5221,16 @@ msgstr "" "Waarschuwing: Weinig ruimte op de systeempartitie ({percent_used} % " "gebruikt, {free_space} vrij)." -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "{drive_vendor} {drive_model} kan veilig worden losgekoppeld." -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "Het apparaat kan veilig worden losgekoppeld." -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -6251,11 +6279,11 @@ msgstr "Installeren van %(package_names)s: %(status)s" msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% voltooid" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "Toepassing ingeschakeld" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "Toepassing uitgeschakeld" diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po index c4d916a45..cdcc71aee 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2019-08-08 00:23+0000\n" "Last-Translator: Radek Pasiok \n" "Language-Team: Polish =20) ? 1 : 2;\n" "X-Generator: Weblate 3.8-dev\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -387,7 +391,6 @@ msgid "Delete Archive %(name)s" msgstr "Usuń archiwum %(name)s" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -431,11 +434,19 @@ msgid "Restoring" msgstr "Odtwarzanie" #: plinth/modules/backups/templates/backups_upload.html:32 -#, python-format +#, 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" +#| " " msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -653,7 +664,11 @@ msgid "" "\"{users_url}\">any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Ustawienia główne" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -737,61 +752,45 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -#, fuzzy -#| msgid "Learn more »" -msgid "Learn more..." -msgstr "Dowiedz się więcej »" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Ustawienia główne" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Błąd podczas ustawiania nazwy hosta: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "Nazwa hosta ustawiona" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Błąd ustawiania nazwy domeny {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "Nazwa domeny ustawiona" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "Błąd podczas ustawiania nazwy hosta: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "Błąd ustawiania nazwy domeny {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -805,8 +804,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -1055,7 +1054,7 @@ msgstr "Aktualizuj ustawienia" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "Ustawienie bez zmian" @@ -1301,7 +1300,7 @@ msgstr "" msgid "Last update" msgstr "Ostatnie uaktualnienie" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Informacje" @@ -1600,49 +1599,50 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Create new repository" -msgid "Name of the repository" -msgstr "Utwórz nowe repozytorium" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 #, fuzzy -#| msgid "Create new repository" -msgid "Description of the repository" -msgstr "Utwórz nowe repozytorium" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "Repository removed." -msgid "Repository's owner name" -msgstr "Usunięto repozytorium." - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Create Repository" -msgid "Private repository" -msgstr "Utwórz repozytorium" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "Niewłaściwa nazwa hosta" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +#, fuzzy +#| msgid "Create new repository" +msgid "Name of the repository" +msgstr "Utwórz nowe repozytorium" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +#, fuzzy +#| msgid "Create new repository" +msgid "Description of the repository" +msgstr "Utwórz nowe repozytorium" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +#, fuzzy +#| msgid "Repository removed." +msgid "Repository's owner name" +msgstr "Usunięto repozytorium." + +#: plinth/modules/gitweb/forms.py:63 +#, fuzzy +#| msgid "Create Repository" +msgid "Private repository" +msgstr "Utwórz repozytorium" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "Remote backup repository already exists." msgid "A repository with this name already exists." @@ -1731,44 +1731,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "Dokumentacja" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Instrukcja" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "DOkumentacja i FAQ" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "O {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Podręcznik" @@ -1883,6 +1883,16 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +#, fuzzy +#| msgid "Learn more »" +msgid "Learn more..." +msgstr "Dowiedz się więcej »" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2111,7 +2121,7 @@ msgstr "Aplikacje i usługi" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Typ" @@ -2191,19 +2201,19 @@ msgstr "Archiwum zostało usunięte." msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2288,7 +2298,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Akcje" @@ -3271,7 +3281,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Urządzenie" @@ -4704,6 +4714,19 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "Użyj podstawowej autentyfikacji HTTP" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "Administrator Account" @@ -4724,6 +4747,16 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "SSH authentication with password enabled." +msgstr "Nie powiodła się autoryzacja na zdalnym serwerze." + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4732,7 +4765,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4824,29 +4857,29 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" msgid "The following storage devices are in use:" msgstr "Używane są następujące dyski:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "Punkt montowania" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "W użyciu" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4858,9 +4891,9 @@ msgstr "" "przestrzeń. W ten sposób można uzyskać dodatkową przestrzeń na przechowanie " "plików." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "Rozszerz główną partycję" @@ -4874,32 +4907,32 @@ msgstr "" "Proszę najpierw utworzyć kopię bezpieczeństwa. Po tej operacji twoja główna " "partycja będzie zwiększona o %(expandable_root_size)s." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "Błąd rozszerzania partycji: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "Partycja rozszerzona." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5873,11 +5906,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "Aplikacja włączona" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "Aplikacja wyłączona" diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po index 36fb48f51..2e97d20c4 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2019-06-22 06:01+0000\n" "Last-Translator: adaragao \n" "Language-Team: Portuguese any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Configuração Geral" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -782,59 +789,45 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Configuração Geral" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Erro ao definir o nome do domínio: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "Nome do domínio definido" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "Erro ao definir o nome do domínio: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "Erro ao definir o nome do domínio: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -848,8 +841,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -1077,7 +1070,7 @@ msgstr "" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "Definição inalterada" @@ -1287,7 +1280,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1549,47 +1542,48 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Create new repository" -msgid "Name of the repository" -msgstr "Criar novo repositório" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "Repository not found" -msgid "Repository's owner name" -msgstr "Repositório não encontrado" - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Create new repository" -msgid "Private repository" -msgstr "Criar novo repositório" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 #, fuzzy #| msgid "Invalid domain name" msgid "Invalid repository name." msgstr "Nome de domínio inválido" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +#, fuzzy +#| msgid "Create new repository" +msgid "Name of the repository" +msgstr "Criar novo repositório" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +#, fuzzy +#| msgid "Repository not found" +msgid "Repository's owner name" +msgstr "Repositório não encontrado" + +#: plinth/modules/gitweb/forms.py:63 +#, fuzzy +#| msgid "Create new repository" +msgid "Private repository" +msgstr "Criar novo repositório" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1675,44 +1669,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1816,6 +1810,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2040,7 +2042,7 @@ msgstr "Serviços e Aplicações" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -2118,19 +2120,19 @@ msgstr "Arquivo apagado." msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2213,7 +2215,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 #, fuzzy #| msgid "Applications" msgid "Actions" @@ -3208,7 +3210,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -4616,6 +4618,17 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +msgid "Disable password authentication" +msgstr "" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "Server Administration" @@ -4636,6 +4649,14 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4644,7 +4665,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4735,27 +4756,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4763,9 +4784,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4777,33 +4798,33 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, fuzzy, python-brace-format #| msgid "Error setting language: {exception}" msgid "Error expanding partition: {exception}" msgstr "Erro ao definir a língua: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5748,13 +5769,13 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 #, fuzzy #| msgid "Applications" msgid "Application enabled" msgstr "Aplicações" -#: plinth/views.py:182 +#: plinth/views.py:183 #, fuzzy #| msgid "Applications" msgid "Application disabled" diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index 1100a5cc8..526b7301a 100644 --- a/plinth/locale/ru/LC_MESSAGES/django.po +++ b/plinth/locale/ru/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2019-07-22 17:06+0000\n" "Last-Translator: Igor \n" "Language-Team: Russian =20) ? 1 : 2;\n" "X-Generator: Weblate 3.8-dev\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -401,7 +405,6 @@ msgid "Delete Archive %(name)s" msgstr "Удалить архив %(name)s" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -448,11 +451,19 @@ msgid "Restoring" msgstr "Восстановление" #: plinth/modules/backups/templates/backups_upload.html:32 -#, python-format +#, 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" +#| " " msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -679,7 +690,11 @@ msgstr "" "веб-сервере. Он может быть доступен на любому " "пользователю {box_name}, принадлежащему к группе админов." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Общие настройки" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -770,58 +785,44 @@ msgstr "Показывать дополнительные приложения msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "Подробнее..." - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Общие настройки" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Ошибка параметра hostname: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "Смена имени хоста" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Ошибка параметра имени домена: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "Смена доменного имени" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Ошибка параметра домашней страницы веб-сервера: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "Установка домашней страницы веб-сервера" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "Ошибка параметра имени домена: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -834,9 +835,14 @@ msgid "File Sharing" msgstr "Обмен Файлами" #: plinth/modules/coquelicot/__init__.py:45 +#, 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 " +"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 является однокликовым веб-приложением для обмена файлами с " @@ -1091,7 +1097,7 @@ msgstr "Обновить настройки" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "Настройки без изменений" @@ -1338,7 +1344,7 @@ msgstr "" msgid "Last update" msgstr "Последнее обновление" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "О службе" @@ -1638,13 +1644,20 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 +#: plinth/modules/gitweb/forms.py:40 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid repository name." +msgstr "Недопустимое имя хоста" + +#: plinth/modules/gitweb/forms.py:47 #, fuzzy #| msgid "Name of the share" msgid "Name of the repository" msgstr "Имя общего ресурса" -#: plinth/modules/gitweb/forms.py:36 +#: plinth/modules/gitweb/forms.py:51 #, fuzzy #| msgid "" #| "A lowercase alpha-numeric string that uniquely identifies a share. " @@ -1654,39 +1667,33 @@ msgstr "" "Цифро-буквенная строка в нижнем регистре, однозначно идентифицирующая " "ресурс. Пример: media." -#: plinth/modules/gitweb/forms.py:40 +#: plinth/modules/gitweb/forms.py:55 #, fuzzy #| msgid "Create new repository" msgid "Description of the repository" msgstr "Создать новый репозиторий" -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Repository removed." msgid "Repository's owner name" msgstr "Репозиторий удалён." -#: plinth/modules/gitweb/forms.py:48 +#: plinth/modules/gitweb/forms.py:63 #, fuzzy #| msgid "Create Repository" msgid "Private repository" msgstr "Создать репозиторий" -#: plinth/modules/gitweb/forms.py:49 +#: plinth/modules/gitweb/forms.py:64 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy -#| msgid "Invalid hostname" -msgid "Invalid repository name." -msgstr "Недопустимое имя хоста" - -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "A share with this name already exists." msgid "A repository with this name already exists." @@ -1778,44 +1785,44 @@ msgstr "{name} удален." msgid "Could not delete {name}: {error}" msgstr "Не удалось удалить {name}: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "Документация" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Руководство" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "Документация и FAQ" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "О {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "Руководство {box_name}" @@ -1939,6 +1946,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "Подробнее..." + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2192,7 +2207,7 @@ msgstr "Просмотр и редактирование приложений Wi #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Тип" @@ -2273,19 +2288,19 @@ msgstr "{name} удален." msgid "Could not delete {title}: {error}" msgstr "Не удалось удалить {name}: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "Сервер Gobby" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted это сервер для Gobby, совместный текстовый редактор." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2382,7 +2397,7 @@ msgid "Website Security" msgstr "Безопасность Веб-сайта" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Действия" @@ -3474,7 +3489,7 @@ msgid "yes" msgstr "Да" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Устройство" @@ -5099,6 +5114,19 @@ msgstr "" "может выполнять задачи администрирования, копировать файлы или запускать " "другие услуги с использованием таких соединений." +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "Использовать базовую аутентификацию HTTP" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "SSH Fingerprint" @@ -5121,6 +5149,16 @@ msgstr "" msgid "Fingerprint" msgstr "SSH отпечаток" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "SSH authentication with password enabled." +msgstr "Аутентификация на удалённый сервер не прошла." + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "Единый вход" @@ -5129,7 +5167,7 @@ msgstr "Единый вход" msgid "Login" msgstr "Логин" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "Storage" @@ -5222,27 +5260,27 @@ msgstr "Использование запрошенной опции не раз msgid "The device is mounted by another user." msgstr "Устройство подключено другим пользователем." -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "Используются следующие устройства хранения:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "Метка" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "Точка монтирования" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Используется" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Расширение Раздела" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5254,9 +5292,9 @@ msgstr "" "пространства. Это даст вам дополнительное свободное место для хранения ваших " "файлов." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "Расширить корневой раздел" @@ -5271,16 +5309,16 @@ msgstr "" "этой операции будет доступно %(expandable_root_size)s свободного места в " "вашем корневом разделе." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "Ошибка расширения раздела: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "Раздел успешно расширен." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " @@ -5289,16 +5327,16 @@ msgstr "" "Предупреждение: недостаточно свободного пространства на системном разделе " "({percent_used}% используется, {free_space} свободно)." -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "{drive_vendor}{drive_model} может быть безопасно отсоединено." -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "Устройство может быть безопасно отсоединено." -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "Ошибка извлечения устройства: {error_message}" @@ -6338,11 +6376,11 @@ msgstr "Установка %(package_names)s: %(status)s" msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% завершено" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "Приложение включено" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "Приложение отключено" diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po index 4f736e9a6..70dfd734f 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2019-05-07 20:48+0000\n" "Last-Translator: Erik Ušaj \n" "Language-Team: Slovenian katerikoli uporabnik na {box_name}, ki je član skupine " "skrbnikov." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -770,57 +785,43 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -834,8 +835,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -1061,7 +1062,7 @@ msgstr "" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "" @@ -1265,7 +1266,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1525,47 +1526,48 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Create new repository" -msgid "Name of the repository" -msgstr "Ustvari novo skladišče" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "Repository not found" -msgid "Repository's owner name" -msgstr "Ne najdem skladišča" - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Create new repository" -msgid "Private repository" -msgstr "Ustvari novo skladišče" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "Neveljavno ime gostitelja" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +#, fuzzy +#| msgid "Create new repository" +msgid "Name of the repository" +msgstr "Ustvari novo skladišče" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +#, fuzzy +#| msgid "Repository not found" +msgid "Repository's owner name" +msgstr "Ne najdem skladišča" + +#: plinth/modules/gitweb/forms.py:63 +#, fuzzy +#| msgid "Create new repository" +msgid "Private repository" +msgstr "Ustvari novo skladišče" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "Create remote backup repository" msgid "A repository with this name already exists." @@ -1653,44 +1655,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1794,6 +1796,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2008,7 +2018,7 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -2086,19 +2096,19 @@ msgstr "Arhiv je izbrisan." msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2179,7 +2189,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "" @@ -3138,7 +3148,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -4535,6 +4545,17 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +msgid "Disable password authentication" +msgstr "" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "Server Administration" @@ -4555,6 +4576,14 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4563,7 +4592,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4652,27 +4681,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4680,9 +4709,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4694,32 +4723,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5642,11 +5671,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index 564b62d7d..4ca48fa18 100644 --- a/plinth/locale/sv/LC_MESSAGES/django.po +++ b/plinth/locale/sv/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" -"PO-Revision-Date: 2016-07-23 19:30+0000\n" -"Last-Translator: Caly \n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" +"PO-Revision-Date: 2019-11-04 20:36+0000\n" +"Last-Translator: Sunil Mohan Adapa \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -17,7 +17,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.8-dev\n" +"X-Generator: Weblate 3.10-dev\n" + +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" #: plinth/action_utils.py:298 #, python-brace-format @@ -58,30 +62,28 @@ msgid "Enable application" msgstr "Aktivera applikation" #: plinth/forms.py:54 -#, fuzzy -#| msgid "Invalid domain name" msgid "Select a domain name to be used with this application" -msgstr "Ogiltigt domännamn" +msgstr "Välj ett domännamn som ska användas med den här applikationen" #: plinth/forms.py:56 msgid "" "Warning! The application may not work properly if domain name is changed " "later." msgstr "" +"Varning! Programmet kanske inte fungerar korrekt om domännamnet ändras " +"senare." #: plinth/forms.py:64 msgid "Language" msgstr "Språkval" #: plinth/forms.py:65 -#, fuzzy -#| msgid "Language for this web administration interface" msgid "Language to use for presenting this web interface" -msgstr "Språkval för detta administrations-webbgränssnitt" +msgstr "Språk att använda för att presentera detta webbgränssnitt" #: plinth/forms.py:72 msgid "Use the language preference set in the browser" -msgstr "" +msgstr "Använd språkinställningen i webbläsaren" #: plinth/middleware.py:73 plinth/templates/setup.html:57 msgid "Application installed." @@ -101,26 +103,19 @@ msgstr "Installationen misslyckades: {error}" #: plinth/modules/monkeysphere/templates/monkeysphere.html:88 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:60 msgid "Web Server" -msgstr "" +msgstr "Webbserver" #: plinth/modules/apache/__init__.py:58 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" -msgstr "" +msgstr "{box_name} Webbgränssnitt (Plinth)" #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" msgstr "Identifiera tjänster" #: plinth/modules/avahi/__init__.py:50 -#, fuzzy, python-brace-format -#| msgid "" -#| "Service discovery allows other devices on the network to discover your " -#| "%(box_name)s and services running on it. It also allows %(box_name)s 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." +#, python-brace-format msgid "" "Service discovery allows other devices on the network to discover your " "{box_name} and services running on it. It also allows {box_name} to " @@ -130,68 +125,66 @@ msgid "" "network." msgstr "" "Tjänstidentifiering tillåter andra enheter i nätverket att upptäcka din " -"%(box_name)s och se vilka tjänster den kör. Det tillåter även din " -"%(box_name)s att upptäcka andra maskiner och vilka tjänster de kör på ditt " -"lokala nätverk. Tjänstidentifiering är inte nödvändigt och fungerar bara på " -"interna nätverk. Du kan låta den vara inaktiverad för att förbättra din " -"säkerhet, särskilt om du ansluter till ett osäkert lokalt nätverk." +"{box_name} och se vilka tjänster den kör. Det tillåter även din {box_name} " +"att upptäcka andra maskiner och vilka tjänster de kör på ditt lokala " +"nätverk. Tjänstidentifiering är inte nödvändigt och fungerar bara på interna " +"nätverk. Du kan låta den vara inaktiverad för att förbättra din säkerhet, " +"särskilt om du ansluter till ett osäkert lokalt nätverk." #: plinth/modules/avahi/__init__.py:77 msgid "Local Network Domain" -msgstr "" +msgstr "Lokalt nätverksdomän" #: plinth/modules/backups/__init__.py:40 msgid "Backups" -msgstr "" +msgstr "Säkerhetskopiering" #: plinth/modules/backups/__init__.py:45 msgid "Backups allows creating and managing backup archives." -msgstr "" +msgstr "Säkerhetskopior gör det möjligt att skapa och hantera säkerhetsarkiv." #: plinth/modules/backups/forms.py:48 #, python-brace-format msgid "{app} (No data to backup)" -msgstr "" +msgstr "{app} (Inga data att säkerhetskopiera)" #: plinth/modules/backups/forms.py:67 msgid "Included apps" -msgstr "" +msgstr "Inkluderade appar" #: plinth/modules/backups/forms.py:67 msgid "Apps to include in the backup" -msgstr "" +msgstr "Appar som ska inkluderas i säkerhetskopian" #: plinth/modules/backups/forms.py:81 msgid "Select the apps you want to restore" -msgstr "" +msgstr "Välj de appar du vill återställa" #: plinth/modules/backups/forms.py:94 msgid "Upload File" -msgstr "" +msgstr "Ladda upp fil" #: plinth/modules/backups/forms.py:96 msgid "Backup files have to be in .tar.gz format" -msgstr "" +msgstr "Säkerhetskopieringsfiler måste vara i .tar.gz-format" #: plinth/modules/backups/forms.py:97 msgid "Select the backup file you want to upload" -msgstr "" +msgstr "Välj säkerhetskopian du vill ladda upp" #: plinth/modules/backups/forms.py:103 msgid "Repository path format incorrect." -msgstr "" +msgstr "Repository path format felaktig." #: plinth/modules/backups/forms.py:110 -#, fuzzy, python-brace-format -#| msgid "Invalid server name" +#, python-brace-format msgid "Invalid username: {username}" -msgstr "Du har angett ett ogiltigt servernamn" +msgstr "Ogiltigt användernamn: {username}" #: plinth/modules/backups/forms.py:120 -#, fuzzy, python-brace-format -#| msgid "Invalid hostname" +#, python-brace-format msgid "Invalid hostname: {hostname}" -msgstr "Ogiltigt värdnamn" +msgstr "Ogiltigt hostname: {hostname}" #: plinth/modules/backups/forms.py:124 #, python-brace-format @@ -199,16 +192,16 @@ msgid "Invalid directory path: {dir_path}" msgstr "" #: plinth/modules/backups/forms.py:130 -#, fuzzy -#| msgid "Certificates (Let's Encrypt)" msgid "Encryption" -msgstr "Certifikat (Let's Encrypt)" +msgstr "Kryptering" #: plinth/modules/backups/forms.py:131 msgid "" "\"Key in Repository\" means that a password-protected key is stored with the " "backup." msgstr "" +"\"Key in Repository\" betyder att en lösenordsskyddad nyckel lagras med " +"säkerhetskopian." #: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:304 msgid "Passphrase" @@ -216,59 +209,59 @@ msgstr "Lösenord" #: plinth/modules/backups/forms.py:136 msgid "Passphrase; Only needed when using encryption." -msgstr "" +msgstr "lösenfras ; Behövs endast när du använder kryptering." #: plinth/modules/backups/forms.py:139 -#, fuzzy -#| msgid "Passphrase" msgid "Confirm Passphrase" -msgstr "Lösenord" +msgstr "Bekräfte Lösenord" #: plinth/modules/backups/forms.py:139 msgid "Repeat the passphrase." -msgstr "" +msgstr "Upprepa lösenfras." #: plinth/modules/backups/forms.py:150 msgid "The entered encryption passphrases do not match" -msgstr "" +msgstr "De angivna lösenfraserna för kryptering matchar inte" #: plinth/modules/backups/forms.py:154 msgid "Passphrase is needed for encryption." -msgstr "" +msgstr "Lösenfras behövs för kryptering." #: plinth/modules/backups/forms.py:189 msgid "Select Disk or Partition" -msgstr "" +msgstr "Välj Disk eller Partition" #: plinth/modules/backups/forms.py:190 msgid "Backups will be stored in the directory FreedomBoxBackups" -msgstr "" +msgstr "Säkerhetskopior lagras i katalogen FreedomBoxBackups" #: plinth/modules/backups/forms.py:199 msgid "SSH Repository Path" -msgstr "" +msgstr "SSH-Respository Path" #: plinth/modules/backups/forms.py:200 msgid "" "Path of a new or existing repository. Example: user@host:~/path/to/repo/" msgstr "" +"Sökväg till ett nytt eller befintligt arkiv. Exempel: user@host:~/path/to/" +"repo/" #: plinth/modules/backups/forms.py:204 -#, fuzzy -#| msgid "Please provide a password" msgid "SSH server password" -msgstr "Ange ett lösenord" +msgstr "SSH server lösenord" #: plinth/modules/backups/forms.py:205 msgid "" "Password of the SSH Server.
SSH key-based authentication is not yet " "possible." msgstr "" +"Lösenord för SSH-servern.
SSH-nyckelbaserad autentisering är ännu " +"inte möjligt." #: plinth/modules/backups/forms.py:224 msgid "Remote backup repository already exists." -msgstr "" +msgstr "Fjärrbackup respository finns redan." #: plinth/modules/backups/forms.py:230 msgid "Select verified SSH public key" @@ -406,7 +399,6 @@ msgid "Delete Archive %(name)s" msgstr "Ta bort %(name)s" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -452,7 +444,7 @@ msgstr "" msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -477,7 +469,7 @@ msgstr "" #: plinth/modules/backups/templates/verify_ssh_hostkey.html:40 msgid "How to verify?" -msgstr "" +msgstr "Hur man verifierar?" #: plinth/modules/backups/templates/verify_ssh_hostkey.html:45 msgid "" @@ -485,122 +477,119 @@ msgid "" "one of the provided options. You can also use dsa, ecdsa, ed25519 etc. " "instead of rsa, by choosing the corresponding file." msgstr "" +"Kör följande kommando på SSH hostdatorn. Utgången ska matcha ett av de " +"följande alternativen. Du kan också använda dsa, ecdsa, ed25519 etc. " +"istället för rsa, genom att välja motsvarande fil." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:59 msgid "Verify Host" -msgstr "" +msgstr "Verifiera Host" #: plinth/modules/backups/views.py:72 msgid "Archive created." -msgstr "" +msgstr "Arkiv skapat." #: plinth/modules/backups/views.py:99 -#, fuzzy -#| msgid "Delete" msgid "Delete Archive" -msgstr "Ta bort" +msgstr "Ta bort Archiv" #: plinth/modules/backups/views.py:111 -#, fuzzy -#| msgid "{name} deleted." msgid "Archive deleted." -msgstr "{name} borttagen." +msgstr "Archiv borttagen." #: plinth/modules/backups/views.py:124 msgid "Upload and restore a backup" -msgstr "" +msgstr "Ladda upp och återställ en säkerhetskopia" #: plinth/modules/backups/views.py:159 msgid "Restored files from backup." -msgstr "" +msgstr "Återställda filer från säkerhetskopian." #: plinth/modules/backups/views.py:187 msgid "No backup file found." -msgstr "" +msgstr "Ingen backup-fil hittades." #: plinth/modules/backups/views.py:195 msgid "Restore from uploaded file" -msgstr "" +msgstr "Återställ från uppladdad fil" #: plinth/modules/backups/views.py:255 msgid "No additional disks available to add a repository." msgstr "" +"Det finns inga ytterligare diskar tillgängliga för att lägga till ett " +"repository." #: plinth/modules/backups/views.py:263 -#, fuzzy -#| msgid "Administrator Account" msgid "Create backup repository" -msgstr "Administratörskonto" +msgstr "Skapa backup repository" #: plinth/modules/backups/views.py:290 msgid "Create remote backup repository" -msgstr "" +msgstr "Skapa remote backup repository" #: plinth/modules/backups/views.py:309 msgid "Added new remote SSH repository." -msgstr "" +msgstr "Lade till ett nytt remote SSH-repository." #: plinth/modules/backups/views.py:331 msgid "Verify SSH hostkey" -msgstr "" +msgstr "Verifiera SSH hostkey" #: plinth/modules/backups/views.py:357 msgid "SSH host already verified." -msgstr "" +msgstr "SSH host redan verifierat." #: plinth/modules/backups/views.py:367 msgid "SSH host verified." -msgstr "" +msgstr "SSH host verifierade." #: plinth/modules/backups/views.py:381 msgid "SSH host public key could not be verified." -msgstr "" +msgstr "SSH hosts offentliga nyckel kunde inte verifieras." #: plinth/modules/backups/views.py:383 msgid "Authentication to remote server failed." -msgstr "" +msgstr "Autentisering till remote servern misslyckades." #: plinth/modules/backups/views.py:385 -#, fuzzy -#| msgid "Error installing application: {error}" msgid "Error establishing connection to server: {}" -msgstr "Installationen misslyckades: {error}" +msgstr "Fel vid upprättande av anslutning till servern: {}" #: plinth/modules/backups/views.py:396 msgid "Repository removed." -msgstr "" +msgstr "Repository raderad." #: plinth/modules/backups/views.py:410 msgid "Remove Repository" -msgstr "" +msgstr "Radera Repository" #: plinth/modules/backups/views.py:419 msgid "Repository removed. Backups were not deleted." -msgstr "" +msgstr "Repository tas bort.Säkerhetskopior raderades inte." #: plinth/modules/backups/views.py:429 msgid "Unmounting failed!" -msgstr "" +msgstr "Avmontering misslyckas!" #: plinth/modules/backups/views.py:444 plinth/modules/backups/views.py:448 msgid "Mounting failed" -msgstr "" +msgstr "Avmontering misslyckades" #: plinth/modules/bind/__init__.py:36 msgid "BIND" -msgstr "" +msgstr "BIND" #: plinth/modules/bind/__init__.py:38 -#, fuzzy -#| msgid "Domain Name" msgid "Domain Name Server" -msgstr "Domännamn" +msgstr "Domän Namn Server" #: plinth/modules/bind/__init__.py:45 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 "" +"Med BIND kan du publicera din Domain Name System (DNS) -information på " +"Internet och lösa DNS sökfrågor för dina användarenheter i ditt nätverk." #: plinth/modules/bind/__init__.py:49 #, python-brace-format @@ -609,25 +598,28 @@ msgid "" "machines on local network. It is also incompatible with sharing Internet " "connection from {box_name}." msgstr "" +"För närvarande, på {box_name}, används BIND bara för att lösa DNS-frågor för " +"andra maskiner i det lokala nätverket. Det är också oförenligt med att dela " +"Internet-anslutning från {box_name}." #: plinth/modules/bind/forms.py:37 msgid "Forwarders" -msgstr "" +msgstr "Vidarebefordrare" #: plinth/modules/bind/forms.py:38 msgid "" "A list DNS servers, separated by space, to which requests will be forwarded" msgstr "" +"En lista med DNS-servrar, separerade med mellanslag, till vilka " +"förfrågningar kommer att vidarebefordras" #: plinth/modules/bind/forms.py:42 -#, fuzzy -#| msgid "Enable Dynamic DNS" msgid "Enable DNSSEC" -msgstr "Aktivera Dynamisk DNS" +msgstr "Aktivera DNSSEC" #: plinth/modules/bind/forms.py:43 msgid "Enable Domain Name System Security Extensions" -msgstr "" +msgstr "Aktivera Domain Name System Security Extensions" #: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:172 #: plinth/modules/openvpn/views.py:146 plinth/modules/shadowsocks/views.py:79 @@ -637,13 +629,11 @@ msgstr "Konfiguration uppdaterad" #: plinth/modules/cockpit/__init__.py:45 plinth/modules/cockpit/manifest.py:27 msgid "Cockpit" -msgstr "" +msgstr "Cockpit" #: plinth/modules/cockpit/__init__.py:47 -#, fuzzy -#| msgid "Administrator Account" msgid "Server Administration" -msgstr "Administratörskonto" +msgstr "Server administrering" #: plinth/modules/cockpit/__init__.py:51 #, python-brace-format @@ -653,21 +643,27 @@ msgid "" "advanced functions that are not usually required. A web based terminal for " "console operations is also available." msgstr "" +"Cockpit är en serverhanterare som gör det enkelt att administrera GNU / " +"Linux-servrar via en webbläsare. På en {box_name} finns kontroller " +"tillgängliga för många avancerade funktioner som vanligtvis inte krävs. En " +"webbaserad terminal för konsoloperationer är också tillgänglig." #: plinth/modules/cockpit/__init__.py:57 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, the blogs and wikis will be available from /ikiwiki." +#, 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." msgstr "" -"När aktiverade kommer bloggar och wikis att vara tillgänglig på /ikiwiki." +"När det är aktiverat kommer cockpit att finnas tillgänglig från /_cockpit/ path på webbservern. Det kan nås via alla användare på {box_name} som tillhör admin-gruppen." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Allmän Konfiguration" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -687,11 +683,11 @@ msgstr "Ogiltigt domännamn" #: plinth/modules/config/forms.py:50 msgid "Apache Default" -msgstr "" +msgstr "Apache standard" #: plinth/modules/config/forms.py:51 msgid "FreedomBox Service (Plinth)" -msgstr "" +msgstr "FreedomBox Service (Plinth)" #: plinth/modules/config/forms.py:63 msgid "Hostname" @@ -732,7 +728,7 @@ msgstr "" #: plinth/modules/config/forms.py:94 msgid "Webserver Home Page" -msgstr "" +msgstr "Webbserverens hemsida" #: plinth/modules/config/forms.py:96 #, python-brace-format @@ -743,87 +739,83 @@ 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älj standardsidan som måste visas när någon besöker ditt {box_name} på " +"webben. Ett typiskt fall är att ställa in din blogg eller wiki som hemsida " +"när någon besöker domännamnet. Observera att när hemsidan är inställd på " +"något annat än {box_name} Service (Plinth), måste dina användare " +"uttryckligen skriva / Plinth eller / freedombox för att nå {box_name} " +"Service (Plinth)." #: plinth/modules/config/forms.py:107 msgid "Show advanced apps and features" -msgstr "" +msgstr "Visa avancerade appar och funktioner" #: plinth/modules/config/forms.py:108 msgid "Show apps and features that require more technical knowledge." -msgstr "" +msgstr "Visa appar och funktioner som kräver mer teknisk kunskap." -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -#, fuzzy -#| msgid "Learn more »" -msgid "Learn more..." -msgstr "Läs mer »" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Allmän Konfiguration" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Fel inställning av värdnamn: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "Värdnamn inställt" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Fel inställning av domännamn: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "Domännamn inställt" -#: plinth/modules/config/views.py:100 -#, fuzzy, python-brace-format -#| msgid "Error setting hostname: {exception}" +#: plinth/modules/config/views.py:87 +#, python-brace-format msgid "Error setting webserver home page: {exception}" -msgstr "Fel inställning av värdnamn: {exception}" +msgstr "Fel vid inställning av webbserverns hemsida: {exception}" + +#: plinth/modules/config/views.py:90 +msgid "Webserver home page set" +msgstr "Webbserverns hemsida är inställt" + +#: plinth/modules/config/views.py:98 +#, python-brace-format +msgid "Error changing advanced mode: {exception}" +msgstr "Fel vid ändring av avancerat läge: {exception}" #: plinth/modules/config/views.py:103 -msgid "Webserver home page set" -msgstr "" - -#: plinth/modules/config/views.py:111 -#, fuzzy, python-brace-format -#| msgid "Error setting domain name: {exception}" -msgid "Error changing advanced mode: {exception}" -msgstr "Fel inställning av domännamn: {exception}" - -#: plinth/modules/config/views.py:116 msgid "Showing advanced apps and features" -msgstr "" +msgstr "Visar avancerade appar och funktioner" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" -msgstr "" +msgstr "Dölja avancerade appar och funktioner" #: plinth/modules/coquelicot/__init__.py:40 msgid "Coquelicot" -msgstr "" +msgstr "Coquelicot" #: plinth/modules/coquelicot/__init__.py:42 msgid "File Sharing" -msgstr "" +msgstr "Fildelning" #: plinth/modules/coquelicot/__init__.py:45 +#, 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 " +"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\" -filsdelning webbapplikation med fokus på att " +"skydda användarnas integritet. Det används bäst för att snabbt dela en enda " +"fil. " #: plinth/modules/coquelicot/__init__.py:48 msgid "" @@ -832,80 +824,73 @@ msgid "" "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/forms.py:30 -#, fuzzy -#| msgid "Password" msgid "Upload Password" -msgstr "Lösenord" +msgstr "Ladda upp Lösenord" #: plinth/modules/coquelicot/forms.py:31 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:35 msgid "Maximum File Size (in MiB)" -msgstr "" +msgstr "Maximal filstorlek (i MiB)" #: plinth/modules/coquelicot/forms.py:36 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:24 msgid "coquelicot" -msgstr "" +msgstr "coquelicot" #: plinth/modules/coquelicot/views.py:59 -#, fuzzy -#| msgid "Password" msgid "Upload password updated" -msgstr "Lösenord" +msgstr "Ladda upp lösenordet uppdaterat" #: plinth/modules/coquelicot/views.py:62 msgid "Failed to update upload password" -msgstr "" +msgstr "Det gick inte att uppdatera uppladdningslösenordet" #: plinth/modules/coquelicot/views.py:70 -#, fuzzy -#| msgid "Configuration updated" msgid "Maximum file size updated" -msgstr "Konfiguration uppdaterad" +msgstr "Maximal filstorlek uppdaterad" #: plinth/modules/coquelicot/views.py:73 msgid "Failed to update maximum file size" -msgstr "" +msgstr "Det gick inte att uppdatera den maximala filstorleken" #: plinth/modules/datetime/__init__.py:39 msgid "Date & Time" msgstr "Datum & Tid" #: plinth/modules/datetime/__init__.py:42 -#, fuzzy -#| msgid "" -#| "Network time server is a program that maintians the system time in " -#| "synchronization with servers on the Internet." msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." msgstr "" -"Tidsserver för nätverket är ett program som sköter synkronisering av " -"systemtiden mot servrar på Internet." +"Network time server är ett program som upprätthåller synkronisering av " +"systemtiden med servrar på Internet." #: plinth/modules/datetime/__init__.py:99 msgid "Time synchronized to NTP server" -msgstr "" +msgstr "Tid synkroniserad till NTP-server" #: plinth/modules/datetime/forms.py:35 msgid "Time Zone" msgstr "Tidszon" #: plinth/modules/datetime/forms.py:36 -#, fuzzy -#| msgid "" -#| "Set your time zone to get accurate timestamps. This will set the " -#| "systemwide time zone." msgid "" "Set your time zone to get accurate timestamps. This will set the system-wide " "time zone." @@ -927,17 +912,13 @@ msgid "Time zone set" msgstr "Tidszon inställd" #: plinth/modules/deluge/__init__.py:39 plinth/modules/deluge/manifest.py:24 -#, fuzzy -#| msgid "Enable Deluge" msgid "Deluge" -msgstr "Aktivera Deluge" +msgstr "Deluge" #: plinth/modules/deluge/__init__.py:41 #: plinth/modules/transmission/__init__.py:43 -#, fuzzy -#| msgid "BitTorrent Web Client (Deluge)" msgid "BitTorrent Web Client" -msgstr "BitTorrent Webbklient (Deluge)" +msgstr "BitTorrent Webbklient" #: plinth/modules/deluge/__init__.py:44 msgid "Deluge is a BitTorrent client that features a Web UI." @@ -958,11 +939,11 @@ msgstr "" #: plinth/modules/deluge/__init__.py:51 #: plinth/modules/transmission/__init__.py:56 msgid "Download files using BitTorrent applications" -msgstr "" +msgstr "Ladda ner filer med BitTorrent-applikationer" #: plinth/modules/deluge/manifest.py:25 msgid "Bittorrent client written in Python/PyGTK" -msgstr "" +msgstr "Bittorrent-klient skriven i Python / PyGTK" #: plinth/modules/diagnostics/__init__.py:33 msgid "Diagnostics" @@ -1023,31 +1004,35 @@ msgstr "Resultat" #: plinth/modules/diaspora/__init__.py:54 #: plinth/modules/diaspora/manifest.py:38 msgid "diaspora*" -msgstr "" +msgstr "diaspora*" #: plinth/modules/diaspora/__init__.py:56 msgid "Federated Social Network" -msgstr "" +msgstr "Federerat Social Network" #: plinth/modules/diaspora/__init__.py:63 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." msgstr "" +"diaspora * är ett decentraliserat socialt nätverk där du kan lagra och " +"kontrollera dina egna data." #: plinth/modules/diaspora/forms.py:30 msgid "Enable new user registrations" -msgstr "" +msgstr "Aktivera nya användarregistreringar" #: plinth/modules/diaspora/manifest.py:26 msgid "dandelion*" -msgstr "" +msgstr "dandelion*" #: plinth/modules/diaspora/manifest.py:28 msgid "" "It is an unofficial webview based client for the community-run, distributed " "social network diaspora*" msgstr "" +"Det är en inofficiell webbvisningsklient för den samhällsdrivna, " +"distribuerade socialt nätverk diaspora*" #: plinth/modules/diaspora/templates/diaspora-post-setup.html:32 #, python-format @@ -1058,6 +1043,12 @@ msgid "" "podname wouldn't be accessible.
You can access the diaspora* pod at diaspora.%(domain_name)s " msgstr "" +"The diaspora*pod-domänen är inställd på%(domain_name)s. Användar-ID " +"kommer att se ut somusername@diaspora.%(domain_name)s
Om " +"FreedomBox-domännamnet ändras, skulle alla data för användare som är " +"registrerade med föregående podnamn inte vara tillgängliga.
Du kan " +"komma åt diaspora * pod på " +"diaspora.%(domain_name)s " #: plinth/modules/diaspora/templates/diaspora-pre-setup.html:58 #: plinth/modules/dynamicdns/templates/dynamicdns_configure.html:40 @@ -1076,52 +1067,34 @@ msgstr "Uppdatera inställningar" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "Instänllningar oförändrade" #: plinth/modules/diaspora/views.py:98 -#, fuzzy -#| msgid "Applications" msgid "User registrations enabled" -msgstr "Applikationer" +msgstr "Användarregistreringar aktiverade" #: plinth/modules/diaspora/views.py:102 -#, fuzzy -#| msgid "Applications" msgid "User registrations disabled" -msgstr "Applikationer" +msgstr "Användarregistreringar avaktiveras" #: plinth/modules/dynamicdns/__init__.py:40 msgid "Dynamic DNS Client" msgstr "Klient för Dynamisk DNS" #: plinth/modules/dynamicdns/__init__.py:44 -#, fuzzy, python-brace-format -#| msgid "" -#| "If your internet provider changes your IP address periodic (i.e. every " -#| "24h) it may be hard for others to find you in the WEB. And for this " -#| "reason nobody may find the services which are provided by %(box_name)s, " -#| "such as ownCloud." +#, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " "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 "" "Om din Internetleverantör periodiskt ändrar din IP-adress (dvs varje 24h) " -"kan det vara svårt för andra att hitta dig på nätet. Då kan ingen hitta de " -"tjänster som tillhandahålls av %(box_name)s (tex. din ownCloud)." +"kan det vara svårt för andra att hitta dig på nätet. Detta hindrar andra " +"från att hitta tjänster som tillhandahålls genom detta %{box_name}." #: plinth/modules/dynamicdns/__init__.py:48 -#, fuzzy -#| msgid "" -#| "The solution is to assign a DNS name to your IP address and update the " -#| "DNS name every time your IP is changed by your Internet provider. Dynamic " -#| "DNS allows you to push your current public IP address to an gnudip " -#| "server. Afterwards the Server will assign your DNS name with the new IP " -#| "and if someone from the Internet asks for your DNS name he will get your " -#| "current IP answered." msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1134,15 +1107,13 @@ msgstr "" "Lösningen är att tilldela DNS-namn till din IP-adress och uppdatera DNS-namn " "varje gång din IP ändras av din Internetleverantör. Dynamisk DNS kopplar din " "nuvarande offentliga IP-adressen till en gnudip server. Därefter tilldelar servern ditt " +"net/' target='_blank'> GnuDip server. Därefter tilldelar servern ditt " "DNS-namn med din nya IP, och om någon från Internet ber om ditt DNS-namn, " "kommer han bli skickad till din aktuella IP." #: plinth/modules/dynamicdns/__init__.py:78 -#, fuzzy -#| msgid "Domain Name" msgid "Dynamic Domain Name" -msgstr "Domännamn" +msgstr "Dynamiskt Domännamn" #: plinth/modules/dynamicdns/forms.py:43 msgid "" @@ -1155,18 +1126,13 @@ msgstr "" "information om uppdateringsadress." #: plinth/modules/dynamicdns/forms.py:47 -#, fuzzy -#| 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." 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 "" "Välj ett uppdateringsprotokoll enligt din leverantör. Om din leverantör inte " -"stöder protokollet GnudIP, eller din leverantör saknas i listan, använd din " +"stöder protokollet GnuDIP, eller din leverantör saknas i listan, använd din " "leverantörs uppdateringsadress." #: plinth/modules/dynamicdns/forms.py:52 @@ -1178,11 +1144,9 @@ msgstr "" "endast värdnamnet för GnuDIP servern (t.ex.: \"exempel.com\")." #: plinth/modules/dynamicdns/forms.py:56 -#, fuzzy, python-brace-format -#| msgid "The public domain name you want use to reach your {box_name}." +#, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." -msgstr "" -"Publikt domännamn du önskar använda för att ansluta till din {box_name}." +msgstr "Det public domännamnet du vill använda för att nå ditt {box_name}." #: plinth/modules/dynamicdns/forms.py:59 msgid "Use this option if your provider uses self signed certificates." @@ -1199,20 +1163,11 @@ msgstr "" "användas för grundläggande HTTP autentisering." #: plinth/modules/dynamicdns/forms.py:65 -#, fuzzy -#| msgid "" -#| "Leave this field empty if you want to keep your previous configured " -#| "password." msgid "Leave this field empty if you want to keep your current password." -msgstr "Lämna fältet tomt om du vill behålla tidigare konfigurerat lösenord." +msgstr "Lämna det här fältet tomt om du vill behålla ditt nuvarande lösenord." #: plinth/modules/dynamicdns/forms.py:68 -#, fuzzy, python-brace-format -#| msgid "" -#| "Optional Value. If your {box_name} is not connected directly to the " -#| "Internet (i.e. connected to a NAT router) this URL is used to figure out " -#| "the real Internet IP. The URL should simply return the IP where the " -#| "client comes from (example: http://myip.datasystems24.de)." +#, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " "(i.e. connected to a NAT router) this URL is used to determine the real IP " @@ -1221,28 +1176,24 @@ msgid "" msgstr "" "Tillval. Om din {box_name} inte är direkt ansluten till Internet (dvs " "anslutna via en NAT-router) används denna webbadress för att hitta korrekt " -"IP. Webbadressen ska helt enkelt returnera det IP som klienten kommer från. " -"(exempel: http://myip.datasystems24.de)." +"Webbadressen. Denna URL ska helt enkelt returnera det IP som klienten kommer " +"från. (exempel: http://myip.datasystems24.de)." #: plinth/modules/dynamicdns/forms.py:76 msgid "The username that was used when the account was created." -msgstr "" +msgstr "Användarnamnet som användes när konton skapades." #: plinth/modules/dynamicdns/forms.py:85 msgid "Enable Dynamic DNS" msgstr "Aktivera Dynamisk DNS" #: plinth/modules/dynamicdns/forms.py:88 -#, fuzzy -#| msgid "Service type" msgid "Service Type" -msgstr "Typ av tjänst" +msgstr "Servicetype" #: plinth/modules/dynamicdns/forms.py:92 -#, fuzzy -#| msgid "GnudIP Server Address" msgid "GnuDIP Server Address" -msgstr "GnudIP Serveradress" +msgstr "GnuDIP Serveradress" #: plinth/modules/dynamicdns/forms.py:95 msgid "Invalid server name" @@ -1275,38 +1226,25 @@ msgstr "Visa lösenord" #: plinth/modules/dynamicdns/forms.py:128 msgid "URL to look up public IP" -msgstr "" +msgstr "URL för att leta upp offentlig IP" #: plinth/modules/dynamicdns/forms.py:152 -#, fuzzy -#| msgid "Please provide update URL or a GnuDIP Server" msgid "Please provide an update URL or a GnuDIP server address" msgstr "Ange uppdateringsadress eller GnuDIP-server" #: plinth/modules/dynamicdns/forms.py:157 -#, fuzzy -#| msgid "Please provide GnuDIP username" msgid "Please provide a GnuDIP username" -msgstr "Ange användarnamn för GnuDIP" +msgstr "Ange ett användarnamn för GnuDIP" #: plinth/modules/dynamicdns/forms.py:161 -#, fuzzy -#| msgid "Please provide GnuDIP domain" msgid "Please provide a GnuDIP domain name" -msgstr "Ange GnuDIP-domän" +msgstr "Ange ett GnuDIP-domännamn" #: plinth/modules/dynamicdns/forms.py:166 msgid "Please provide a password" msgstr "Ange ett lösenord" #: plinth/modules/dynamicdns/templates/dynamicdns.html:27 -#, fuzzy -#| msgid "" -#| "If you are looking for a free dynamic DNS account, you may find a free " -#| "GnuDIP service at gnudip.datasystems24.net or you may find free update " -#| "URL based services on freedns.afraid.org." msgid "" "If you are looking for a free dynamic DNS account, you may find a free " "GnuDIP service at ." msgstr "" "Om du önskar ett gratis konto för dynamiskt DNS, kan du hitta en gratis " -"GnuDIP-tjänst på " -"gnudip.datasystems24.net eller så kan du hitta tjänster baserade på " -"gratis uppdateringsadress från gnudip.datasystems24.net eller så kan du hitta gratis " +"uppdaterade URL-baserade tjänster på freedns.afraid.org." #: plinth/modules/dynamicdns/templates/dynamicdns.html:38 -#, fuzzy, python-format -#| msgid "" -#| "If your %(box_name)s is connected behind some NAT router, don't forget to " -#| "add port forwarding (i.e. forward some standard ports like 80 and 443)." +#, python-format msgid "" "If your %(box_name)s is connected behind a NAT router, don't forget to add " "port forwarding for standard ports, including TCP port 80 (HTTP) and TCP " "port 443 (HTTPS)." msgstr "" "Om din %(box_name)s är ansluten bakom en NAT-router, glöm inte att lägga " -"till port forwarding (dvs vidarebefordra några standardportar, såsom 80 och " -"443)." +"till port forwarding för standard ports, såsom TCP port 80 (HTTP) och TCP " +"port 443 (HTTPS)." #: plinth/modules/dynamicdns/templates/dynamicdns_configure.html:30 msgid "" @@ -1348,44 +1283,36 @@ msgid "NAT type" msgstr "NAT-typ" #: plinth/modules/dynamicdns/templates/dynamicdns_status.html:28 -#, fuzzy -#| msgid "" -#| "NAT type not detected yet, if you do not provide a \"IP check URL\" we " -#| "will not detect a NAT type." 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-typ ännu inte upptäckt. Om du inte anger en \"IP-kontroll adress\" " -"kommer vi inte att upptäcka en NAT-typ." +"NAT-typen har ännu inte upptäckts. Om du inte anger en \"IP-kontrolladress\" " +"kommer vi inte att kunna upptäcka NAT-typen." #: plinth/modules/dynamicdns/templates/dynamicdns_status.html:34 msgid "Direct connection to the Internet." msgstr "Direktanslutning till Internet." #: plinth/modules/dynamicdns/templates/dynamicdns_status.html:36 -#, fuzzy, python-format -#| msgid "" -#| "Behind NAT. This means that Dynamic DNS service will poll the \"IP check " -#| "URL\" for changes (the \"IP check URL\" entry is needed 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." +#, python-format msgid "" "Behind NAT. This means that Dynamic DNS service will poll the \"URL to look " "up public IP\" for changes (the \"URL to look up public IP\" entry is needed " "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 "" -"Bakom NAT. Detta betyder att dynamisk DNS-tjänsten kommer att fråga \"IP-" -"kontrolladress\" om ändringar skett (\"IP-kontrolladress\" behöver därför " -"anges, annars kan inte ändringar av IP adress upptäckas). Det kan ta upp " -"till %(timer)s minuter tills din DNS-inställning uppdateras." +"Bakom NAT. Detta innebär att Dynamic DNS-tjänst kommer att undersöka \"URL " +"för att leta upp offentlig IP\" för ändringar (posten \"URL för att leta upp " +"offentlig IP\" behövs för detta, annars kommer IP-ändringar inte att " +"upptäckas). Om WAN IP ändras kan det ta upp till%(timer) s minuter tills din " +"DNS-post har uppdaterats." #: plinth/modules/dynamicdns/templates/dynamicdns_status.html:48 msgid "Last update" msgstr "Senaste uppdatering" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Om" @@ -1406,27 +1333,25 @@ msgid "Configure Dynamic DNS" msgstr "Konfigurera Dynamisk DNS" #: plinth/modules/dynamicdns/views.py:107 -#, fuzzy -#| msgid "Dynamic DNS" msgid "Dynamic DNS Status" -msgstr "Dynamisk DNS (DomänNamnsServer)" +msgstr "Dynamisk DNS (DomänNamnsServer) status" #: plinth/modules/ejabberd/__init__.py:50 msgid "ejabberd" -msgstr "" +msgstr "ejabbert" #: plinth/modules/ejabberd/__init__.py:52 #: plinth/modules/matrixsynapse/__init__.py:49 -#, fuzzy -#| msgid "DNS Server" msgid "Chat Server" -msgstr "DNS-Server" +msgstr "Chat-Server" #: plinth/modules/ejabberd/__init__.py:55 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" +"XMPP är en öppen och standardiserad kommunikationsprotokoll. Här kan du köra " +"din XMPP-server (kallad ejabberd)." #: plinth/modules/ejabberd/__init__.py:58 #, python-brace-format @@ -1436,10 +1361,15 @@ msgid "" "target='_blank'>XMPP client. When enabled, ejabberd can be accessed by " "any user with a {box_name} login." msgstr "" +"För att faktiskt kommunicera kan du använda webbklient eller andra XMPP-klient. När den är aktiverad kan ejabberd " +"nås av alla användare med en {box_name} inloggning." #: plinth/modules/ejabberd/forms.py:32 msgid "Enable Message Archive Management" -msgstr "" +msgstr "Aktivera meddelandearkivhantering" #: plinth/modules/ejabberd/forms.py:34 #, python-brace-format @@ -1449,32 +1379,34 @@ 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 "" +"Om det är aktiverat lagrar din {box_name} historia för chattmeddelanden. " +"Detta tillåter synkronisering av konversationer mellan flera klienter och " +"läsa historiken för ett chattrum med flera användare. Det beror på " +"klientinställningarna om historiken lagras som ren text eller krypterad." #: plinth/modules/ejabberd/manifest.py:26 -#, fuzzy -#| msgid "Connection" msgid "Conversations" -msgstr "Anslutning" +msgstr "Konversationer" #: plinth/modules/ejabberd/manifest.py:40 msgid "Xabber" -msgstr "" +msgstr "Xabber" #: plinth/modules/ejabberd/manifest.py:42 msgid "" "Open source Jabber (XMPP) client with multi-account support and clean and " "simple interface. " msgstr "" +"Open Source Jabber (XMPP) -klient med stöd för flera konton och ett rent och " +"enkelt gränssnitt. " #: plinth/modules/ejabberd/manifest.py:57 msgid "Yaxim" -msgstr "" +msgstr "Yaxim" #: plinth/modules/ejabberd/manifest.py:71 -#, fuzzy -#| msgid "DNS Server" msgid "ChatSecure" -msgstr "DNS-Server" +msgstr "ChatSecure" #: plinth/modules/ejabberd/manifest.py:73 msgid "" @@ -1483,14 +1415,18 @@ msgid "" "new accounts on public XMPP servers (including via Tor), or even connect to " "your own server for extra security." msgstr "" +"ChatSecure är en gratis och open source meddelanden-app som har OTR-" +"kryptering via XMPP. Du kan ansluta till ett befintligt Google-konto, skapa " +"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:89 msgid "Dino" -msgstr "" +msgstr "Dino" #: plinth/modules/ejabberd/manifest.py:101 msgid "Gajim" -msgstr "" +msgstr "Gajim" #: plinth/modules/ejabberd/templates/ejabberd.html:33 #, python-format @@ -1499,11 +1435,14 @@ msgid "" "like username@%(domainname)s. You can setup your domain on the system " "Configure page." msgstr "" +"Din XMPP-serverdomän är inställd på %(domainname)s. Användar-ID " +"kommer att se ut som användarnamn@%(domainname)s. Du kan ställa in " +"din domän på systemet Konfigurera sidan." #: plinth/modules/ejabberd/templates/ejabberd.html:47 #: plinth/modules/jsxc/templates/jsxc.html:32 msgid "Launch web client" -msgstr "" +msgstr "Starta webbklient" #: plinth/modules/ejabberd/templates/ejabberd.html:54 #: plinth/modules/i2p/templates/i2p.html:26 @@ -1517,29 +1456,25 @@ msgstr "Konfiguration" #: plinth/modules/ejabberd/views.py:77 msgid "Message Archive Management enabled" -msgstr "" +msgstr "Meddelandearkivhantering aktiverad" #: plinth/modules/ejabberd/views.py:81 msgid "Message Archive Management disabled" -msgstr "" +msgstr "Meddelandearkivhantering avaktiverad" #: plinth/modules/firewall/__init__.py:36 msgid "Firewall" msgstr "Brandvägg" #: plinth/modules/firewall/__init__.py:40 -#, fuzzy, python-brace-format -#| msgid "" -#| "Firewall is a security system that controls the incoming and outgoing " -#| "network traffic on your %(box_name)s. Keeping a firewall enabled and " -#| "properly configured reduces risk of security threat from the Internet." +#, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " "network traffic on your {box_name}. Keeping a firewall enabled and properly " "configured reduces risk of security threat from the Internet." msgstr "" "Brandväggen är ett säkerhetssystem som styr den inkommande och utgående " -"nätverkstrafiken på din %(box_name)s. Att ha en brandvägg aktiverad och " +"nätverkstrafiken på din {box_name}. Att ha en brandvägg aktiverad och " "korrekt konfigurerad minskar risken för säkerhetshot från Internet." #: plinth/modules/firewall/templates/firewall.html:30 @@ -1556,10 +1491,8 @@ msgstr "" "alternativt, vid ett system med systemd \"systemctl start firewalld\"." #: plinth/modules/firewall/templates/firewall.html:43 -#, fuzzy -#| msgid "Show password" msgid "Show Ports" -msgstr "Visa lösenord" +msgstr "Visa Ports" #: plinth/modules/firewall/templates/firewall.html:44 msgid "Service/Port" @@ -1607,10 +1540,13 @@ msgid "" "Enter the secret generated during FreedomBox installation. This secret can " "also be obtained from the file /var/lib/plinth/firstboot-wizard-secret" msgstr "" +"Ange hemligheten som genererades under FreedomBox-installationen. Denna " +"hemlighet kan också erhållas från filen /var/lib/plinth/firstboot-wizard-" +"secret" #: plinth/modules/first_boot/forms.py:31 msgid "Secret" -msgstr "" +msgstr "Hemlighet" #: plinth/modules/first_boot/templates/firstboot_complete.html:26 msgid "Setup Complete!" @@ -1619,11 +1555,11 @@ msgstr "Installation klar!" #: plinth/modules/first_boot/templates/firstboot_complete.html:29 #, python-format msgid "Without any apps, your %(box_name)s cannot do very much." -msgstr "" +msgstr "Utan några appar kan dina%(box_name)s inte göra så mycket." #: plinth/modules/first_boot/templates/firstboot_complete.html:36 msgid "Install Apps" -msgstr "" +msgstr "Installera appar" #: plinth/modules/first_boot/templates/firstboot_complete.html:42 #, python-format @@ -1631,6 +1567,8 @@ msgid "" "You may want to check the network setup and " "modify it if necessary." msgstr "" +"Du kanske vill kontrollera nätverksinställningar och ändra den vid behov." #: plinth/modules/first_boot/templates/firstboot_welcome.html:52 msgid "Start Setup" @@ -1642,11 +1580,11 @@ msgstr "Installationen Klar" #: plinth/modules/gitweb/__init__.py:41 plinth/modules/gitweb/manifest.py:28 msgid "Gitweb" -msgstr "" +msgstr "Gitweb" #: plinth/modules/gitweb/__init__.py:43 msgid "Simple Git Hosting" -msgstr "" +msgstr "Enkelt Git hosting" #: plinth/modules/gitweb/__init__.py:46 msgid "" @@ -1658,103 +1596,98 @@ msgid "" "available graphical clients. And you can share your code with people around " "the world." msgstr "" +"Git är ett distribuerat versionskontrollsystem för att spåra förändringar i " +"källkoden under mjukvaruutveckling. Gitweb tillhandahåller ett " +"webbgränssnitt till Git-respositorys. Du kan bläddra i historik och innehåll " +"i källkoden, använda sökning för att hitta relevanta åtaganden och kod. Du " +"kan också klona respositorys och ladda upp kodändringar med en kommandorad " +"Git-klient eller med flera tillgängliga grafiska klienter. Och du kan dela " +"din kod med människor runt om i världen." #: plinth/modules/gitweb/__init__.py:53 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" +"För att lära dig mer om hur du använder Git besökGit handledning." #: plinth/modules/gitweb/__init__.py:57 msgid "Read-write access to Git repositories" -msgstr "" - -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Documentation" -msgid "Name of the repository" -msgstr "Dokumentation" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" +msgstr "Läs-skrivåtkomst till Git-respositories" +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -msgid "Repository's owner name" -msgstr "" - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Documentation" -msgid "Private repository" -msgstr "Dokumentation" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy -#| msgid "Invalid hostname" msgid "Invalid repository name." -msgstr "Ogiltigt värdnamn" +msgstr "Ogiltigt respository namn." -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +msgid "Name of the repository" +msgstr "Förvarets namn" + +#: plinth/modules/gitweb/forms.py:51 +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:55 +msgid "Description of the repository" +msgstr "Beskrivning av förvaret" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "Tillval, för att visa på Gitweb." + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "Förvarets ägarnamn" + +#: plinth/modules/gitweb/forms.py:63 +msgid "Private repository" +msgstr "Privat respository" + +#: plinth/modules/gitweb/forms.py:64 +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:83 msgid "A repository with this name already exists." -msgstr "" +msgstr "Ett förvar med det här namnet finns redan." #: plinth/modules/gitweb/manifest.py:36 msgid "Git" -msgstr "" +msgstr "Git" #: plinth/modules/gitweb/templates/gitweb_configure.html:41 #: plinth/modules/gitweb/templates/gitweb_configure.html:43 -#, fuzzy -#| msgid "Documentation" msgid "Create repository" -msgstr "Dokumentation" +msgstr "Skapa respository" #: plinth/modules/gitweb/templates/gitweb_configure.html:50 -#, fuzzy -#| msgid "Documentation" msgid "Manage Repositories" -msgstr "Dokumentation" +msgstr "Hantera respositories" #: plinth/modules/gitweb/templates/gitweb_configure.html:55 -#, fuzzy -#| msgid "No wikis or blogs available." msgid "No repositories available." -msgstr "Ingen wiki eller blogg tillgänglig." +msgstr "Inga förvar finns tillgängliga." #: plinth/modules/gitweb/templates/gitweb_configure.html:63 -#, fuzzy, python-format -#| msgid "Delete %(name)s" +#, python-format msgid "Delete repository %(repo.name)s" -msgstr "Ta bort %(name)s" +msgstr "Ta bort respository %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_configure.html:78 -#, fuzzy, python-format -#| msgid "Go to site %(site)s" +#, python-format msgid "Go to repository %(repo.name)s" -msgstr "Gå till webbsidan %(site)s" +msgstr "Gå till respository %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#, fuzzy, python-format -#| msgid "Delete Wiki or Blog %(name)s" +#, python-format msgid "Delete Git Repository %(name)s" -msgstr "Ta bort Wiki eller Blogg %(name)s" +msgstr "Ta bort Git-respository %(name)s" #: plinth/modules/gitweb/templates/gitweb_delete.html:33 msgid "Delete this repository permanently?" -msgstr "" +msgstr "Radera detta arkiv permanent?" #: plinth/modules/gitweb/templates/gitweb_delete.html:42 #: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:44 @@ -1764,22 +1697,20 @@ msgstr "Ta bort %(name)s" #: plinth/modules/gitweb/views.py:62 msgid "Repository created." -msgstr "" +msgstr "Respository skapat." #: plinth/modules/gitweb/views.py:93 msgid "Repository edited." -msgstr "" +msgstr "Respository redigerad." #: plinth/modules/gitweb/views.py:98 -#, fuzzy -#| msgid "Documentation" msgid "Edit repository" -msgstr "Dokumentation" +msgstr "Redigera respository" #: plinth/modules/gitweb/views.py:126 plinth/modules/searx/views.py:62 #: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:170 msgid "An error occurred during configuration." -msgstr "" +msgstr "Ett fel inträffade under konfiguration." #: plinth/modules/gitweb/views.py:147 #, python-brace-format @@ -1791,45 +1722,44 @@ msgstr "{name} borttagen." msgid "Could not delete {name}: {error}" msgstr "Kunde inte ta bort {name}: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 -#, fuzzy msgid "Manual" msgstr "Manual" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" -msgstr "" +msgstr "Få stöd" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" -msgstr "" +msgstr "Skicka feedback" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" -msgstr "" +msgstr "Bidra" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "Dokumentation och Vanliga Frågor" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "Om {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Manual" @@ -1895,25 +1825,23 @@ msgid "Learn more »" msgstr "Läs mer »" #: plinth/modules/help/templates/help_about.html:78 -#, fuzzy, python-format -#| msgid "You are running Plinth version %(version)s." +#, python-format msgid "You are running %(os_release)s and %(box_name)s version %(version)s." -msgstr "Du använder Plinth version %(version)s." +msgstr "Du använder %(os_release)s och %(box_name)s version %(version)s." #: plinth/modules/help/templates/help_about.html:83 #, python-format msgid "There is a new %(box_name)s version available." -msgstr "" +msgstr "Det finns en ny %(box_name)s version tillgänglig." #: plinth/modules/help/templates/help_about.html:87 -#, fuzzy, python-format -#| msgid "%(box_name)s Setup" +#, python-format msgid "%(box_name)s is up to date." -msgstr "%(box_name)s Installation" +msgstr "%(box_name)s är uppdaterad." #: plinth/modules/help/templates/help_about.html:94 msgid "Security Notice" -msgstr "" +msgstr "Säkerhetsmeddelande" #: plinth/modules/help/templates/help_about.html:96 msgid "" @@ -1922,6 +1850,9 @@ msgid "" "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:36 #: plinth/modules/help/templates/help_index.html:76 @@ -1931,7 +1862,7 @@ msgstr "%(box_name)s Installation" #: plinth/modules/help/templates/help_contribute.html:27 msgid "The FreedomBox project welcomes contributions of all kinds." -msgstr "" +msgstr "FreedomBox-projektet välkomnar bidrag av alla slag." #: plinth/modules/help/templates/help_contribute.html:33 msgid "" @@ -1941,6 +1872,11 @@ msgid "" "into your language, hosting hackathons or install fests, and by spreading " "the word." msgstr "" +"Du kan bidra med att skriva kod, testa och rapportera buggar, diskutera nya " +"användningsfall och applikationer, designa logotyper och konstverk, ge " +"support till dina medanvändare, översätta FreedomBox och dess applikationer " +"till ditt språk, vara värd för hackathons eller installera fests och genom " +"att sprida ord." #: plinth/modules/help/templates/help_contribute.html:43 msgid "" @@ -1953,11 +1889,27 @@ msgid "" "throughout the world. The FreedomBox Foundation would not exist without its " "supporters." msgstr "" +"Du kan också hjälpa projektet ekonomiskt genomdonera till den icke-vinstdrivande " +"FreedomBox Foundation. FreedomBox Foundation grundades 2011 och är en ideell " +"organisation med status 501(c)(3) baserad i New York City som finns för att " +"stödja FreedomBox. Det tillhandahåller teknisk infrastruktur och juridiska " +"tjänster för projektet, bedriver partnerskap och förespråkar för FreedomBox " +"över hela världen. FreedomBox Foundatio n skulle inte existera utan sina " +"anhängare." + +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "Läs mer..." #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" -msgstr "" +msgstr "Din feedback hjälper oss att förbättra%(box_name)s!" #: plinth/modules/help/templates/help_feedback.html:33 msgid "" @@ -1965,6 +1917,9 @@ msgid "" "improve them on our discussion forum." msgstr "" +"Låt oss veta om saknade funktioner, dina favoritappar och hur vi kan " +"förbättra dem på våra diskussionsforum." #: plinth/modules/help/templates/help_feedback.html:41 msgid "" @@ -1973,10 +1928,14 @@ msgid "" "a> to let our developers know. To report, first check if the issue is " "already reported and then use the \"New issue\" button." msgstr "" +"Om du hittar fel eller problem kan du använda utföra tracker att " +"låta våra utvecklare veta. För att rapportera ska du först kontrollera om " +"problemet redan har rapporterats och sedan använda knappen \"New issue\"." #: plinth/modules/help/templates/help_feedback.html:51 msgid "Thank you!" -msgstr "" +msgstr "Tack så mycket!" #: plinth/modules/help/templates/help_index.html:27 #: plinth/templates/help-menu.html:23 plinth/templates/help-menu.html:28 @@ -2028,10 +1987,8 @@ msgstr "" "#freedombox kanal via webbchatten." #: plinth/modules/help/templates/help_manual.html:40 -#, fuzzy -#| msgid "{box_name} Manual" msgid "Download as PDF" -msgstr "{box_name} Manual" +msgstr "Ladda ner som PDF fil" #: plinth/modules/help/templates/help_support.html:27 #, python-format @@ -2198,7 +2155,7 @@ msgstr "Tjänster och Applikationer" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Typ" @@ -2279,21 +2236,21 @@ msgstr "{name} borttagen." msgid "Could not delete {title}: {error}" msgstr "Kunde inte ta bort {name}: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 #, fuzzy #| msgid "DNS Server" msgid "Gobby Server" msgstr "DNS-Server" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2400,7 +2357,7 @@ msgid "Website Security" msgstr "Säkerhet för webbsida" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Åtgärder" @@ -3505,7 +3462,7 @@ msgid "yes" msgstr "Ja" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Enhet" @@ -4947,6 +4904,19 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "Använd grundläggande HTTP-autentisering" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "GPG Fingerprint" @@ -4969,6 +4939,16 @@ msgstr "" msgid "Fingerprint" msgstr "GPG Fingeravtryck" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "SSH authentication with password enabled." +msgstr "Autentisering till remote servern misslyckades." + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4977,7 +4957,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -5070,29 +5050,29 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following is the current status:" msgid "The following storage devices are in use:" msgstr "Aktuell status:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5100,9 +5080,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -5114,33 +5094,33 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" msgid "Error expanding partition: {exception}" msgstr "Fel i inställning av tidszon: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -6107,13 +6087,13 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 #, fuzzy #| msgid "Applications" msgid "Application enabled" msgstr "Applikationer" -#: plinth/views.py:182 +#: plinth/views.py:183 #, fuzzy #| msgid "Applications" msgid "Application disabled" diff --git a/plinth/locale/ta/LC_MESSAGES/django.po b/plinth/locale/ta/LC_MESSAGES/django.po index a901d50c0..d22b27fc3 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,6 +18,10 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -358,7 +362,6 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -400,7 +403,7 @@ msgstr "" msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -596,7 +599,11 @@ msgid "" "\"{users_url}\">any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -672,57 +679,43 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -736,8 +729,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -963,7 +956,7 @@ msgstr "" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "" @@ -1165,7 +1158,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1425,39 +1418,40 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -msgid "Name of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -msgid "Repository's owner name" -msgstr "" - -#: plinth/modules/gitweb/forms.py:48 -msgid "Private repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +msgid "Name of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +msgid "Repository's owner name" +msgstr "" + +#: plinth/modules/gitweb/forms.py:63 +msgid "Private repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1530,44 +1524,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1671,6 +1665,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -1885,7 +1887,7 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -1962,19 +1964,19 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2055,7 +2057,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "" @@ -3014,7 +3016,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -4407,6 +4409,17 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +msgid "Disable password authentication" +msgstr "" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" msgstr "" @@ -4425,6 +4438,14 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4433,7 +4454,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4522,27 +4543,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4550,9 +4571,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4564,32 +4585,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5512,11 +5533,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po index 8cdd48f84..ea3e0e20f 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2019-07-22 17:06+0000\n" "Last-Translator: Joseph Nuthalapati \n" "Language-Team: Telugu media." -#: plinth/modules/gitweb/forms.py:40 +#: plinth/modules/gitweb/forms.py:55 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:48 +#: plinth/modules/gitweb/forms.py:63 #, fuzzy #| msgid "Create User" msgid "Private repository" msgstr "వినియోగదారుని సృష్టించు" -#: plinth/modules/gitweb/forms.py:49 +#: plinth/modules/gitweb/forms.py:64 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy -#| msgid "Invalid hostname" -msgid "Invalid repository name." -msgstr "ఆతిథ్యనామం చెల్లనిది" - -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:83 #, fuzzy msgid "A repository with this name already exists." msgstr "ఈ సేవ ఇప్పటికే ఉంది" @@ -1739,44 +1738,44 @@ msgstr "{name} తొలగించబడింది." msgid "Could not delete {name}: {error}" msgstr "{name} ను తొలగించలేము: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "పత్రావళి" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "కరదీపిక" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "పత్రావళి మరియు తరచూ అడిగే ప్రశ్నలు" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "{box_name} గురించి" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} కరదీపిక" @@ -1895,6 +1894,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "మరింత తెలుసుకోండి.." + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2150,7 +2157,7 @@ msgstr "వికీ అనువర్తనాలను చూడండి మ #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "రకం" @@ -2231,19 +2238,19 @@ msgstr "{name} తొలగించబడింది." msgid "Could not delete {title}: {error}" msgstr "{name} ను తొలగించలేము: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "ఇన్ఫినోటెడ్" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "గాబ్బీ సేవకం" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "Gobby కోసం ఇన్ఫినోటెడ్ అనేది ఒక సర్వర్,ఒక సహకార టెక్స్ట్ ఎడిటర్." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2339,7 +2346,7 @@ msgid "Website Security" msgstr "వెబ్‌సైటు భద్రత" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "చర్యలు" @@ -3452,7 +3459,7 @@ msgid "yes" msgstr "అవును" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "పరికరం" @@ -5064,6 +5071,19 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "HTTP ప్రాథమిక ప్రమాణీకరణ ఉపయోగించు" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "SSH Fingerprint" @@ -5086,6 +5106,14 @@ msgstr "" msgid "Fingerprint" msgstr "SSH వేలిముద్ర" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -5094,7 +5122,7 @@ msgstr "" msgid "Login" msgstr "ప్రవేశించు" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 #, fuzzy msgid "Storage" msgstr "అన్హొస్టెడ్ స్టోరేజ్ ని (పునరుద్ధరించండి)" @@ -5189,29 +5217,29 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" msgid "The following storage devices are in use:" msgstr "క్రింది డిస్కులు ఉపయోగంలో ఉన్నాయి:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "ఆరొహించు కోన" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "ఉపయోగించబడినది" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5222,9 +5250,9 @@ msgstr "" "రూట్ విభజనను మీరు విస్తరించుకోగలరు. మీ ఫైళ్లు భద్రపరుచుకునేందుకు అది మీకు అదనపు సామర్ధ్యాన్ని " "అందిస్తుంది." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "రూట్ విభజనను విస్తరించు" @@ -5238,32 +5266,32 @@ msgstr "" "దయచేసి మీ సమాచారాన్ని బ్యాకప్ (భద్రపరచు కొనుట) చేస్కోండి. ఈ క్రియ తర్వాత %(expandable_root_size)s " "అధనపు సామర్ధ్యం మీ రూ విభజనలో అందుబాటులోకి వస్తుంది." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "విభజన విస్తరణలో దోషం: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "విభజనను విస్తరించడం విజయవంతమైనది." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -6266,11 +6294,11 @@ msgstr "సంస్థాపన %(package_names)s%:(status)s" msgid "%(percentage)s%% complete" msgstr "%(percentage)s %% పూర్తి" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "అనువర్తనం ఆమోదింపబడింది" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "అనువర్తనం ఆమోదింపబడలేదు" diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po index b7cb8ffd4..704f9cfa8 100644 --- a/plinth/locale/tr/LC_MESSAGES/django.po +++ b/plinth/locale/tr/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2019-08-08 00:22+0000\n" "Last-Translator: Mesut Akcan \n" "Language-Team: Turkish 1;\n" "X-Generator: Weblate 3.8-dev\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -382,7 +386,6 @@ msgid "Delete Archive %(name)s" msgstr "%(name)s arşivini sil" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -425,11 +428,19 @@ msgid "Restoring" msgstr "Geri yükleniyor" #: plinth/modules/backups/templates/backups_upload.html:32 -#, python-format +#, 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" +#| " " msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -658,7 +669,11 @@ msgstr "" "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." -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Genel Yapılandırma" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -744,57 +759,43 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "Daha fazla bilgi edin..." - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Genel Yapılandırma" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Makine isminin ayarlanmasında hata: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "Makine ismi ayarlandı" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Alan adının ayarlanmasında hata: {exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "Alan adı ayarlandı" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Web sunucusu ana sayfasını ayarlama hatası: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Gelişmiş mod değiştirilirken hata oluştu: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -808,8 +809,8 @@ msgstr "Dosya paylaşımı" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -1059,7 +1060,7 @@ msgstr "Kurulumu güncelle" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "Ayar değiştirilmedi" @@ -1307,7 +1308,7 @@ msgstr "" msgid "Last update" msgstr "Son güncelleme" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "Hakkında" @@ -1612,49 +1613,50 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Create new repository" -msgid "Name of the repository" -msgstr "Yeni depo oluştur" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 #, fuzzy -#| msgid "Create new repository" -msgid "Description of the repository" -msgstr "Yeni depo oluştur" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "Repository removed." -msgid "Repository's owner name" -msgstr "Depo kaldırıldı." - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Create Repository" -msgid "Private repository" -msgstr "Depo oluştur" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "Geçersiz makine ismi" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +#, fuzzy +#| msgid "Create new repository" +msgid "Name of the repository" +msgstr "Yeni depo oluştur" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +#, fuzzy +#| msgid "Create new repository" +msgid "Description of the repository" +msgstr "Yeni depo oluştur" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +#, fuzzy +#| msgid "Repository removed." +msgid "Repository's owner name" +msgstr "Depo kaldırıldı." + +#: plinth/modules/gitweb/forms.py:63 +#, fuzzy +#| msgid "Create Repository" +msgid "Private repository" +msgstr "Depo oluştur" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "This service already exists" msgid "A repository with this name already exists." @@ -1746,44 +1748,44 @@ msgstr "{name} silindi." msgid "Could not delete {name}: {error}" msgstr "{name} silinemedi: {error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "Belgelendirme" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Kullanım Kılavuzu" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "Belgelendirme ve SSS" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "{box_name} hakkında" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Kılavuzu" @@ -1911,6 +1913,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "Daha fazla bilgi edin..." + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2176,7 +2186,7 @@ msgstr "Viki uygulamalarını görüntüle ve düzenle" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Tür" @@ -2258,21 +2268,21 @@ msgstr "{name} silindi." msgid "Could not delete {title}: {error}" msgstr "{name} silinemedi: {error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "Gobby Sunucusu" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 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 " "sunucudur." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2371,7 +2381,7 @@ msgid "Website Security" msgstr "Site Güvenliği" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "Eylemler" @@ -3476,7 +3486,7 @@ msgid "yes" msgstr "evet" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "Cihaz" @@ -5154,6 +5164,19 @@ msgstr "" "bilgisayar bu bağlantıları vasıtasıyla yönetim işlemleri yapabilir, dosya " "kopyalayabilir ve diğer servisleri çalıştırabilir." +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "Temel HTTP kimlik doğrulamasını kullan" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "SSH Fingerprint" @@ -5176,6 +5199,14 @@ msgstr "" msgid "Fingerprint" msgstr "SSH Parmak izi" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "Tekli Oturum Açma" @@ -5184,7 +5215,7 @@ msgstr "Tekli Oturum Açma" msgid "Login" msgstr "Giriş" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "Depolama" @@ -5279,29 +5310,29 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" msgid "The following storage devices are in use:" msgstr "Aşağıdaki diskler kullanımdadır:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "Bağlama Noktası" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "Kullanılan" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "Bölüm Genişletme" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5313,9 +5344,9 @@ msgstr "" "genişletilebilir. Bu, size dosyalarınızı saklamak için ilave boş alan " "sunacaktır." -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "Kök Bölümünü Genişlet" @@ -5330,16 +5361,16 @@ msgstr "" "bölümünüzde ilave %(expandable_root_size)s değerinde boş alan " "kullanılabilir olacaktır." -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "Bölümün genişletilmesinde hata: {exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "Bölüm başarılı bir şekilde genişletildi." -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " @@ -5348,16 +5379,16 @@ msgstr "" "İkaz: sistem disk bölümünde düşük alan (%{percent_used} kullanıldı, " "{free_space} boş)." -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -6433,11 +6464,11 @@ msgstr "%(package_names)s kuruluyor: %(status)s" msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% tamamlandı" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "Uygulama etkinleştirildi" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "Uygulama devre dışı bırakıldı" diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index 44e884871..2772e345e 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: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2019-01-04 17:06+0000\n" "Last-Translator: prolinux ukraine \n" "Language-Team: Ukrainian =20) ? 1 : 2;\n" "X-Generator: Weblate 3.4-dev\n" +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "" + #: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" @@ -392,7 +396,6 @@ msgid "Delete Archive %(name)s" msgstr "Видалити архів %(name)s" #: plinth/modules/backups/templates/backups_form.html:35 -#: plinth/modules/config/templates/config.html:45 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:35 #: plinth/modules/sharing/templates/sharing_add_edit.html:35 msgid "Submit" @@ -438,7 +441,7 @@ msgstr "Відновити" msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " -"is\n" +"its\n" " contents. You can choose the apps you wish to restore after uploading " "a\n" " backup file.\n" @@ -644,7 +647,11 @@ msgid "" "\"{users_url}\">any user on {box_name} belonging to the admin group." msgstr "" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "Загальні налаштування" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -720,59 +727,45 @@ msgstr "" msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "Загальні налаштування" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Помилка параметру hostname: {exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "Помилка параметру hostname: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "Помилка параметру hostname: {exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "" @@ -786,8 +779,8 @@ msgstr "" #: plinth/modules/coquelicot/__init__.py:45 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 " +"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 "" @@ -1015,7 +1008,7 @@ msgstr "Оновити налаштування" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "" @@ -1219,7 +1212,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "" @@ -1479,47 +1472,48 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Remove Repository" -msgid "Name of the repository" -msgstr "Видалити сховище" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 -msgid "Description of the repository" -msgstr "" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "Repository not found" -msgid "Repository's owner name" -msgstr "Сховище не знайдено" - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Remove Repository" -msgid "Private repository" -msgstr "Видалити сховище" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 #, fuzzy #| msgid "Repository not found" msgid "Invalid repository name." msgstr "Сховище не знайдено" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +#, fuzzy +#| msgid "Remove Repository" +msgid "Name of the repository" +msgstr "Видалити сховище" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +#, fuzzy +#| msgid "Repository not found" +msgid "Repository's owner name" +msgstr "Сховище не знайдено" + +#: plinth/modules/gitweb/forms.py:63 +#, fuzzy +#| msgid "Remove Repository" +msgid "Private repository" +msgstr "Видалити сховище" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 msgid "A repository with this name already exists." msgstr "" @@ -1605,44 +1599,44 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1746,6 +1740,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -1962,7 +1964,7 @@ msgstr "" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" @@ -2040,19 +2042,19 @@ msgstr "Архів видалено." msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2133,7 +2135,7 @@ msgid "Website Security" msgstr "" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "" @@ -3092,7 +3094,7 @@ msgid "yes" msgstr "" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "" @@ -4489,6 +4491,17 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +msgid "Disable password authentication" +msgstr "" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" msgstr "" @@ -4507,6 +4520,14 @@ msgstr "" msgid "Fingerprint" msgstr "" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +msgid "SSH authentication with password enabled." +msgstr "" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -4515,7 +4536,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 msgid "Storage" msgstr "" @@ -4604,27 +4625,27 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -4632,9 +4653,9 @@ msgid "" "will provide you additional free space to store your files." msgstr "" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "" @@ -4646,32 +4667,32 @@ msgid "" "root partition." msgstr "" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -5594,11 +5615,11 @@ msgstr "" msgid "%(percentage)s%% complete" msgstr "" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "" diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po index 076eca705..64c20f80b 100644 --- a/plinth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/plinth/locale/zh_Hans/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 17:55-0400\n" +"POT-Creation-Date: 2019-11-04 18:34-0500\n" "PO-Revision-Date: 2019-09-13 05:23+0000\n" "Last-Translator: Anxin YI <2732146152@qq.com>\n" "Language-Team: Chinese (Simplified) 用" "户访问。" -#: plinth/modules/config/__init__.py:60 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:37 +msgid "General Configuration" +msgstr "常规配置" + +#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/pagekite/views.py:32 plinth/modules/snapshot/views.py:41 @@ -724,57 +739,43 @@ msgstr "展示先进的应用和特点" msgid "Show apps and features that require more technical knowledge." msgstr "展示需要更多专业知识的应用和特点。" -#: plinth/modules/config/templates/config.html:34 -#: plinth/modules/help/templates/help_contribute.html:57 -#: plinth/modules/power/templates/power_restart.html:42 -#: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/modules/storage/templates/storage.html:48 -#: plinth/templates/app.html:43 plinth/templates/setup.html:48 -#: plinth/templates/simple_app.html:38 -msgid "Learn more..." -msgstr "了解更多……" - -#: plinth/modules/config/views.py:54 -msgid "General Configuration" -msgstr "常规配置" - -#: plinth/modules/config/views.py:78 +#: plinth/modules/config/views.py:64 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "设置主机名错误:{exception}" -#: plinth/modules/config/views.py:81 +#: plinth/modules/config/views.py:67 msgid "Hostname set" msgstr "主机名设置" -#: plinth/modules/config/views.py:89 +#: plinth/modules/config/views.py:76 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "设置域名错误:{exception}" -#: plinth/modules/config/views.py:92 +#: plinth/modules/config/views.py:79 msgid "Domain name set" msgstr "域名集" -#: plinth/modules/config/views.py:100 +#: plinth/modules/config/views.py:87 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "设置主机名错误:{exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:90 msgid "Webserver home page set" msgstr "网页服务器主页已设置" -#: plinth/modules/config/views.py:111 +#: plinth/modules/config/views.py:98 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "更改为高级模式时错误:{exception}" -#: plinth/modules/config/views.py:116 +#: plinth/modules/config/views.py:103 msgid "Showing advanced apps and features" msgstr "展现先进的应用和特征" -#: plinth/modules/config/views.py:119 +#: plinth/modules/config/views.py:106 msgid "Hiding advanced apps and features" msgstr "隐藏先进的应用和特征" @@ -787,9 +788,14 @@ msgid "File Sharing" msgstr "文件分享" #: plinth/modules/coquelicot/__init__.py:45 +#, 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 " +"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 是一个“即点即用”的文件分享应用,注重保护用户隐私。适宜快速分享单个" @@ -1022,7 +1028,7 @@ msgstr "更新安装程序" #: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:65 #: plinth/modules/matrixsynapse/views.py:105 #: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:148 -#: plinth/modules/tor/views.py:148 plinth/views.py:175 +#: plinth/modules/tor/views.py:148 plinth/views.py:176 msgid "Setting unchanged" msgstr "设置未改变" @@ -1257,7 +1263,7 @@ msgstr "" msgid "Last update" msgstr "最后一次更新" -#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:70 +#: plinth/modules/dynamicdns/views.py:41 plinth/modules/help/help.py:73 #: plinth/templates/help-menu.html:61 plinth/templates/help-menu.html:62 msgid "About" msgstr "关于" @@ -1543,49 +1549,50 @@ msgstr "" msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/forms.py:32 -#, fuzzy -#| msgid "Create new repository" -msgid "Name of the repository" -msgstr "创建新存储库" - -#: plinth/modules/gitweb/forms.py:36 -msgid "An alpha-numeric string that uniquely identifies a repository." -msgstr "" - +#: plinth/modules/gitweb/forms.py:34 plinth/modules/gitweb/forms.py:37 #: plinth/modules/gitweb/forms.py:40 #, fuzzy -#| msgid "Create new repository" -msgid "Description of the repository" -msgstr "创建新存储库" - -#: plinth/modules/gitweb/forms.py:41 plinth/modules/gitweb/forms.py:45 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "Repository removed." -msgid "Repository's owner name" -msgstr "储存库被移除。" - -#: plinth/modules/gitweb/forms.py:48 -#, fuzzy -#| msgid "Create User" -msgid "Private repository" -msgstr "创建用户" - -#: plinth/modules/gitweb/forms.py:49 -msgid "Allow only authorized users to access this repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:66 -#, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "无效的主机名" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:47 +#, fuzzy +#| msgid "Create new repository" +msgid "Name of the repository" +msgstr "创建新存储库" + +#: plinth/modules/gitweb/forms.py:51 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:55 +#, fuzzy +#| msgid "Create new repository" +msgid "Description of the repository" +msgstr "创建新存储库" + +#: plinth/modules/gitweb/forms.py:56 plinth/modules/gitweb/forms.py:60 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +#, fuzzy +#| msgid "Repository removed." +msgid "Repository's owner name" +msgstr "储存库被移除。" + +#: plinth/modules/gitweb/forms.py:63 +#, fuzzy +#| msgid "Create User" +msgid "Private repository" +msgstr "创建用户" + +#: plinth/modules/gitweb/forms.py:64 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "This service already exists" msgid "A repository with this name already exists." @@ -1677,44 +1684,44 @@ msgstr "{name} 已删除。" msgid "Could not delete {name}: {error}" msgstr "不能删除 {name}:{error}" -#: plinth/modules/help/help.py:47 +#: plinth/modules/help/help.py:50 msgid "Documentation" msgstr "文档" -#: plinth/modules/help/help.py:51 plinth/modules/networks/forms.py:68 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "手册" -#: plinth/modules/help/help.py:56 plinth/modules/help/help.py:104 +#: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 #: plinth/templates/help-menu.html:42 plinth/templates/help-menu.html:43 msgid "Get Support" msgstr "" -#: plinth/modules/help/help.py:61 plinth/modules/help/help.py:98 +#: plinth/modules/help/help.py:64 plinth/modules/help/help.py:101 #: plinth/modules/help/templates/help_feedback.html:24 #: plinth/templates/help-menu.html:48 plinth/templates/help-menu.html:49 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/help.py:66 plinth/modules/help/help.py:92 +#: plinth/modules/help/help.py:69 plinth/modules/help/help.py:95 #: plinth/modules/help/templates/help_contribute.html:24 #: plinth/templates/help-menu.html:54 plinth/templates/help-menu.html:55 msgid "Contribute" msgstr "" -#: plinth/modules/help/help.py:86 +#: plinth/modules/help/help.py:89 msgid "Documentation and FAQ" msgstr "文档和 FAQ" -#: plinth/modules/help/help.py:112 +#: plinth/modules/help/help.py:115 #, python-brace-format msgid "About {box_name}" msgstr "关于 {box_name}" -#: plinth/modules/help/help.py:134 +#: plinth/modules/help/help.py:150 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} 手册" @@ -1836,6 +1843,14 @@ msgid "" "supporters." msgstr "" +#: plinth/modules/help/templates/help_contribute.html:57 +#: plinth/modules/power/templates/power_restart.html:42 +#: plinth/modules/power/templates/power_shutdown.html:41 +#: plinth/templates/app.html:43 plinth/templates/setup.html:48 +#: plinth/templates/simple_app.html:38 +msgid "Learn more..." +msgstr "了解更多……" + #: plinth/modules/help/templates/help_feedback.html:27 #, python-format msgid "Your feedback will help us improve %(box_name)s!" @@ -2096,7 +2111,7 @@ msgstr "服务和应用程序" #: plinth/modules/ikiwiki/forms.py:29 #: plinth/modules/networks/templates/connection_show.html:98 -#: plinth/modules/storage/templates/storage.html:61 +#: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "类型" @@ -2176,21 +2191,21 @@ msgstr "{name} 已删除。" msgid "Could not delete {title}: {error}" msgstr "不能删除 {name}:{error}" -#: plinth/modules/infinoted/__init__.py:40 +#: plinth/modules/infinoted/__init__.py:42 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:42 +#: plinth/modules/infinoted/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" msgstr "Web 服务器" -#: plinth/modules/infinoted/__init__.py:45 +#: plinth/modules/infinoted/__init__.py:47 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted 是一个 Gobby 服务器,Gobby 是一个协作化的文本编辑器。" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2297,7 +2312,7 @@ msgid "Website Security" msgstr "网站安全" #: plinth/modules/letsencrypt/templates/letsencrypt.html:47 -#: plinth/modules/storage/templates/storage.html:63 +#: plinth/modules/storage/templates/storage.html:45 msgid "Actions" msgstr "行动" @@ -3370,7 +3385,7 @@ msgid "yes" msgstr "是的" #: plinth/modules/networks/templates/connection_show.html:84 -#: plinth/modules/storage/templates/storage.html:58 +#: plinth/modules/storage/templates/storage.html:40 msgid "Device" msgstr "设备" @@ -4983,6 +4998,19 @@ msgid "" "connections." msgstr "" +#: plinth/modules/ssh/forms.py:30 +#, fuzzy +#| msgid "Use HTTP basic authentication" +msgid "Disable password authentication" +msgstr "使用 HTTP 基本身份验证" + +#: plinth/modules/ssh/forms.py:31 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + #: plinth/modules/ssh/templates/ssh.html:26 #, fuzzy #| msgid "SSH Fingerprint" @@ -5005,6 +5033,16 @@ msgstr "" msgid "Fingerprint" msgstr "SSH 指纹" +#: plinth/modules/ssh/views.py:66 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:69 +#, fuzzy +#| msgid "Authentication to remote server failed." +msgid "SSH authentication with password enabled." +msgstr "远程服务器认证失败。" + #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" msgstr "" @@ -5013,7 +5051,7 @@ msgstr "" msgid "Login" msgstr "登录" -#: plinth/modules/storage/__init__.py:37 plinth/modules/storage/views.py:53 +#: plinth/modules/storage/__init__.py:37 #, fuzzy #| msgid "reStore" msgid "Storage" @@ -5115,29 +5153,29 @@ msgstr "" msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/templates/storage.html:53 +#: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" msgid "The following storage devices are in use:" msgstr "正在使用以下磁盘:" -#: plinth/modules/storage/templates/storage.html:59 +#: plinth/modules/storage/templates/storage.html:41 msgid "Label" msgstr "" -#: plinth/modules/storage/templates/storage.html:60 +#: plinth/modules/storage/templates/storage.html:42 msgid "Mount Point" msgstr "挂载点" -#: plinth/modules/storage/templates/storage.html:62 +#: plinth/modules/storage/templates/storage.html:44 msgid "Used" msgstr "已使用" -#: plinth/modules/storage/templates/storage.html:108 +#: plinth/modules/storage/templates/storage.html:90 msgid "Partition Expansion" msgstr "" -#: plinth/modules/storage/templates/storage.html:110 +#: plinth/modules/storage/templates/storage.html:92 #, python-format msgid "" "There is %(expandable_root_size)s of unallocated space available after your " @@ -5147,9 +5185,9 @@ msgstr "" "这里有 %(expandable_root_size)s 未分配的空间可用在你的根分区。可以扩展根分区" "以使用这个空间。这可以让你有更多空间来存储文件。" -#: plinth/modules/storage/templates/storage.html:120 +#: plinth/modules/storage/templates/storage.html:102 #: plinth/modules/storage/templates/storage_expand.html:39 -#: plinth/modules/storage/views.py:74 +#: plinth/modules/storage/views.py:83 msgid "Expand Root Partition" msgstr "扩展根分区" @@ -5163,32 +5201,32 @@ msgstr "" "执行前请备份你的数据。这个操作以后,将会为你的根分区扩展出 " "%(expandable_root_size)s 空余空间。" -#: plinth/modules/storage/views.py:86 +#: plinth/modules/storage/views.py:95 #, python-brace-format msgid "Error expanding partition: {exception}" msgstr "扩展分区错误:{exception}" -#: plinth/modules/storage/views.py:89 +#: plinth/modules/storage/views.py:98 msgid "Partition expanded successfully." msgstr "已成功扩展分区。" -#: plinth/modules/storage/views.py:106 +#: plinth/modules/storage/views.py:115 #, no-python-format, python-brace-format msgid "" "Warning: Low space on system partition ({percent_used}% used, {free_space} " "free)." msgstr "" -#: plinth/modules/storage/views.py:132 +#: plinth/modules/storage/views.py:141 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:136 +#: plinth/modules/storage/views.py:145 msgid "Device can be safely unplugged." msgstr "" -#: plinth/modules/storage/views.py:146 +#: plinth/modules/storage/views.py:155 #, python-brace-format msgid "Error ejecting device: {error_message}" msgstr "" @@ -6228,11 +6266,11 @@ msgstr "正在安装 %(package_names)s:%(status)s" msgid "%(percentage)s%% complete" msgstr "已完成 %(percentage)s%%" -#: plinth/views.py:179 +#: plinth/views.py:180 msgid "Application enabled" msgstr "应用程序已启用" -#: plinth/views.py:182 +#: plinth/views.py:183 msgid "Application disabled" msgstr "应用程序已禁用" diff --git a/plinth/modules/backups/templates/backups_upload.html b/plinth/modules/backups/templates/backups_upload.html index 7af35df67..07790a239 100644 --- a/plinth/modules/backups/templates/backups_upload.html +++ b/plinth/modules/backups/templates/backups_upload.html @@ -30,7 +30,7 @@

{% blocktrans %} - Upload a backup file downloaded from another {{ box_name }} to restore is + Upload a backup file downloaded from another {{ box_name }} to restore its contents. You can choose the apps you wish to restore after uploading a backup file. {% endblocktrans %} diff --git a/plinth/modules/config/__init__.py b/plinth/modules/config/__init__.py index af28b5a8f..e732f1f81 100644 --- a/plinth/modules/config/__init__.py +++ b/plinth/modules/config/__init__.py @@ -22,7 +22,7 @@ import os import socket import augeas -from django.utils.translation import ugettext_lazy +from django.utils.translation import ugettext_lazy as _ from plinth import actions from plinth import app as app_module @@ -34,6 +34,8 @@ version = 2 is_essential = True +name = _('General Configuration') + depends = ['firewall', 'names'] manual_page = 'Configure' @@ -57,14 +59,12 @@ class ConfigApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() - menu_item = menu.Menu('menu-config', ugettext_lazy('Configure'), None, - 'fa-cog', 'config:index', - parent_url_name='system') + menu_item = menu.Menu('menu-config', _('Configure'), None, 'fa-cog', + 'config:index', parent_url_name='system') self.add(menu_item) - domain_type = DomainType('domain-type-static', - ugettext_lazy('Domain Name'), 'config:index', - can_have_certificate=True) + domain_type = DomainType('domain-type-static', _('Domain Name'), + 'config:index', can_have_certificate=True) self.add(domain_type) diff --git a/plinth/modules/config/urls.py b/plinth/modules/config/urls.py index 676e60a0f..5d4570bba 100644 --- a/plinth/modules/config/urls.py +++ b/plinth/modules/config/urls.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ URLs for the Configuration module """ @@ -24,5 +23,5 @@ from django.conf.urls import url from . import views urlpatterns = [ - url(r'^sys/config/$', views.index, name='index'), + url(r'^sys/config/$', views.ConfigAppView.as_view(), name='index'), ] diff --git a/plinth/modules/config/views.py b/plinth/modules/config/views.py index 8b2988633..69b4f0463 100644 --- a/plinth/modules/config/views.py +++ b/plinth/modules/config/views.py @@ -21,10 +21,9 @@ FreedomBox views for basic system configuration. import logging from django.contrib import messages -from django.template.response import TemplateResponse from django.utils.translation import ugettext as _ -from plinth import actions +from plinth import actions, views from plinth.modules import config from plinth.signals import (domain_added, domain_removed, post_hostname_change, pre_hostname_change) @@ -34,89 +33,79 @@ from .forms import ConfigurationForm LOGGER = logging.getLogger(__name__) -def index(request): - """Serve the configuration form""" - status = get_status() +class ConfigAppView(views.AppView): + """Serve configuration page.""" + name = config.name + form_class = ConfigurationForm + app_id = 'config' + manual_page = config.manual_page + show_status_block = False - if request.method == 'POST': - form = ConfigurationForm(request.POST, initial=status, - prefix='configuration') - # pylint: disable-msg=E1101 - if form.is_valid(): - _apply_changes(request, status, form.cleaned_data) - status = get_status() - form = ConfigurationForm(initial=status, prefix='configuration') - else: - form = ConfigurationForm(initial=status, prefix='configuration') + def get_initial(self): + """Return the current status""" + return { + 'hostname': config.get_hostname(), + 'domainname': config.get_domainname(), + 'homepage': config.get_home_page(), + 'advanced_mode': config.get_advanced_mode(), + } - return TemplateResponse( - request, 'config.html', { - 'title': _('General Configuration'), - 'form': form, - 'manual_page': config.manual_page - }) + def form_valid(self, form): + """Apply the form changes""" + old_status = form.initial + new_status = form.cleaned_data - -def get_status(): - """Return the current status""" - return { - 'hostname': config.get_hostname(), - 'domainname': config.get_domainname(), - 'homepage': config.get_home_page(), - 'advanced_mode': config.get_advanced_mode(), - } - - -def _apply_changes(request, old_status, new_status): - """Apply the form changes""" - if old_status['hostname'] != new_status['hostname']: - try: - set_hostname(new_status['hostname']) - except Exception as exception: - messages.error( - request, - _('Error setting hostname: {exception}').format( - exception=exception)) - else: - messages.success(request, _('Hostname set')) - - if old_status['domainname'] != new_status['domainname']: - try: - set_domainname(new_status['domainname'], old_status['domainname']) - except Exception as exception: - messages.error( - request, - _('Error setting domain name: {exception}').format( - exception=exception)) - else: - messages.success(request, _('Domain name set')) - - if old_status['homepage'] != new_status['homepage']: - try: - config.change_home_page(new_status['homepage']) - except Exception as exception: - messages.error( - request, - _('Error setting webserver home page: {exception}').format( - exception=exception)) - else: - messages.success(request, _('Webserver home page set')) - - if old_status['advanced_mode'] != new_status['advanced_mode']: - try: - config.set_advanced_mode(new_status['advanced_mode']) - except Exception as exception: - messages.error( - request, - _('Error changing advanced mode: {exception}').format( - exception=exception)) - else: - if new_status['advanced_mode']: - messages.success(request, - _('Showing advanced apps and features')) + if old_status['hostname'] != new_status['hostname']: + try: + set_hostname(new_status['hostname']) + except Exception as exception: + messages.error( + self.request, + _('Error setting hostname: {exception}').format( + exception=exception)) else: - messages.success(request, - _('Hiding advanced apps and features')) + messages.success(self.request, _('Hostname set')) + + if old_status['domainname'] != new_status['domainname']: + try: + set_domainname(new_status['domainname'], + old_status['domainname']) + except Exception as exception: + messages.error( + self.request, + _('Error setting domain name: {exception}').format( + exception=exception)) + else: + messages.success(self.request, _('Domain name set')) + + if old_status['homepage'] != new_status['homepage']: + try: + config.change_home_page(new_status['homepage']) + except Exception as exception: + messages.error( + self.request, + _('Error setting webserver home page: {exception}').format( + exception=exception)) + else: + messages.success(self.request, _('Webserver home page set')) + + if old_status['advanced_mode'] != new_status['advanced_mode']: + try: + config.set_advanced_mode(new_status['advanced_mode']) + except Exception as exception: + messages.error( + self.request, + _('Error changing advanced mode: {exception}').format( + exception=exception)) + else: + if new_status['advanced_mode']: + messages.success(self.request, + _('Showing advanced apps and features')) + else: + messages.success(self.request, + _('Hiding advanced apps and features')) + + return super(views.AppView, self).form_valid(form) def set_hostname(hostname): @@ -137,8 +126,9 @@ def set_hostname(hostname): LOGGER.info('Setting domain name after hostname change - %s', domainname) actions.superuser_run('domainname-change', [domainname]) - post_hostname_change.send_robust( - sender='config', old_hostname=old_hostname, new_hostname=hostname) + post_hostname_change.send_robust(sender='config', + old_hostname=old_hostname, + new_hostname=hostname) def set_domainname(domainname, old_domainname): diff --git a/plinth/modules/coquelicot/__init__.py b/plinth/modules/coquelicot/__init__.py index 13d01a67f..bcc55c1a8 100644 --- a/plinth/modules/coquelicot/__init__.py +++ b/plinth/modules/coquelicot/__init__.py @@ -42,8 +42,8 @@ name = _('Coquelicot') short_description = _('File Sharing') 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 ' + _('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 ' diff --git a/plinth/modules/gitweb/__init__.py b/plinth/modules/gitweb/__init__.py index afad3422c..6cac4b9ca 100644 --- a/plinth/modules/gitweb/__init__.py +++ b/plinth/modules/gitweb/__init__.py @@ -147,6 +147,12 @@ class GitwebWebserverAuth(Webserver): repos = app.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() + if not have_public_repos(repos): + super().enable() + def init(): """Initialize the module.""" @@ -178,6 +184,11 @@ def diagnose(): return results +def restore_post(packet): + """Update access after restoration of backups.""" + app.update_service_access() + + def have_public_repos(repos): """Check for public repositories""" return any((repo['access'] == 'public' for repo in repos)) diff --git a/plinth/modules/gitweb/data/etc/apache2/conf-available/gitweb-freedombox.conf b/plinth/modules/gitweb/data/etc/apache2/conf-available/gitweb-freedombox.conf index 726fd5820..21bdd2469 100644 --- a/plinth/modules/gitweb/data/etc/apache2/conf-available/gitweb-freedombox.conf +++ b/plinth/modules/gitweb/data/etc/apache2/conf-available/gitweb-freedombox.conf @@ -7,20 +7,10 @@ ## mod_rewrite ## -# Make gitweb work with custom FreedomBox configuration. -SetEnv GITWEB_CONFIG /etc/gitweb-freedombox.conf - -# Configure git-http-backend to work with our repository path. -SetEnv GIT_PROJECT_ROOT /var/lib/git - -# Tell git-http-backend to work with all the projects even when they don't have -# the file 'git-daemon-export-ok'. -SetEnv GIT_HTTP_EXPORT_ALL - # All git operations are handled by git-http-backend CGI script. Rest of the # HTTP requests (say sent by the browser) are handled by gitweb. ScriptAliasMatch \ - "(?x)^/gitweb/(.*/(HEAD | \ + "(?x)^/gitweb/([^/]+/(HEAD | \ info/refs | \ objects/(info/[^/]+ | \ [0-9a-f]{2}/[0-9a-f]{38} | \ @@ -31,6 +21,9 @@ ScriptAliasMatch \ Alias /gitweb /usr/share/gitweb + # Make gitweb work with custom FreedomBox configuration. + SetEnv GITWEB_CONFIG /etc/gitweb-freedombox.conf + Include includes/freedombox-single-sign-on.conf @@ -53,6 +46,13 @@ Alias /gitweb /usr/share/gitweb + # Configure git-http-backend to work with our repository path. + SetEnv GIT_PROJECT_ROOT /var/lib/git + + # Tell git-http-backend to work with all the projects even when they don't + # have the file 'git-daemon-export-ok'. + SetEnv GIT_HTTP_EXPORT_ALL + # Authentication is required when performing git push (git send-pack). SetEnvIfExpr "%{QUERY_STRING} =~ /service=git-receive-pack/" AUTHREQUIRED SetEnvIfExpr "%{REQUEST_URI} =~ /git-receive-pack$/" AUTHREQUIRED diff --git a/plinth/modules/gitweb/forms.py b/plinth/modules/gitweb/forms.py index 670570a70..ff22b1e85 100644 --- a/plinth/modules/gitweb/forms.py +++ b/plinth/modules/gitweb/forms.py @@ -18,6 +18,8 @@ Django form for configuring Gitweb. """ +import re + from django import forms from django.core.exceptions import ValidationError from django.utils.translation import ugettext_lazy as _ @@ -25,13 +27,26 @@ from django.utils.translation import ugettext_lazy as _ from plinth.modules import gitweb +def validate_repository(name): + """Validate a Git repository name.""" + + if not re.match(r'^[a-zA-Z0-9-._]+$', name): + raise ValidationError(_('Invalid repository name.')) + + if name.startswith(('-', '.')): + raise ValidationError(_('Invalid repository name.')) + + if name.endswith('.git.git'): + raise ValidationError(_('Invalid repository name.')) + + class EditRepoForm(forms.Form): """Form to create and edit a new repository.""" - name = forms.RegexField( + name = forms.CharField( label=_('Name of the repository'), strip=True, - regex=r'^[a-zA-Z0-9-._]+$', + validators=[validate_repository], help_text=_( 'An alpha-numeric string that uniquely identifies a repository.'), ) @@ -62,9 +77,6 @@ class EditRepoForm(forms.Form): if name.endswith('.git'): name = name[:-4] - if (not name) or name.startswith(('-', '.')): - raise ValidationError(_('Invalid repository name.')) - for repo in gitweb.app.get_repo_list(): if name == repo['name']: raise ValidationError( diff --git a/plinth/modules/gitweb/templates/gitweb_configure.html b/plinth/modules/gitweb/templates/gitweb_configure.html index 84b615f33..72e0d041a 100644 --- a/plinth/modules/gitweb/templates/gitweb_configure.html +++ b/plinth/modules/gitweb/templates/gitweb_configure.html @@ -54,7 +54,7 @@ {% if not repos %}

{% trans 'No repositories available.' %}

{% else %} -
+
{% for repo in repos %}
. +# +""" +Test module for gitweb module operations. +""" + +import imp +import json +import pathlib +from unittest.mock import patch + +import pytest +from django.forms import ValidationError + + +def _action_file(): + """Return the path to the 'gitweb' actions file.""" + current_directory = pathlib.Path(__file__).parent + return str( + current_directory / '..' / '..' / '..' / '..' / 'actions' / 'gitweb') + + +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): + gitweb_actions.main() + captured = capsys.readouterr() + return captured.out + + 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' + } + + # Create repository + call_action([ + 'create-repo', '--name', repo, '--description', data['description'], + '--owner', data['owner'], '--is-private', '--keep-ownership' + ]) + 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 + + # 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]) + + # Delete repository + call_action(['delete-repo', '--name', repo_renamed]) + with pytest.raises(RuntimeError, match='Repository not found'): + call_action(['repo-info', '--name', repo_renamed]) + + +@pytest.mark.parametrize( + 'name', + ['.Test-repo', 'Test-repo.git.git', '/root/Test-repo', 'Test-repö']) +def test_action_create_repo_with_invalid_names(call_action, name): + """Test that creating repository with invalid names fails.""" + with pytest.raises(ValidationError): + call_action([ + 'create-repo', '--name', name, '--description', '', '--owner', '', + '--keep-ownership' + ]) diff --git a/plinth/modules/help/help.py b/plinth/modules/help/help.py index c9e20c452..f16893dc9 100644 --- a/plinth/modules/help/help.py +++ b/plinth/modules/help/help.py @@ -20,12 +20,15 @@ Help app for FreedomBox. import mimetypes import os +import pathlib import subprocess from apt.cache import Cache from django.core.files.base import File -from django.http import Http404, HttpResponse +from django.http import Http404, HttpResponse, HttpResponseRedirect from django.template.response import TemplateResponse +from django.urls import reverse +from django.utils.translation import get_language_from_request from django.utils.translation import ugettext as _ from django.utils.translation import ugettext_lazy @@ -118,15 +121,28 @@ def about(request): return TemplateResponse(request, 'help_about.html', context) -def manual(request, page='freedombox-manual.part.html'): +def manual(request, lang=None, page=None): """Serve the manual page from the 'doc' directory""" - try: - page = '{}.part.html'.format( - page) if not page.endswith('html') else page - with open(os.path.join(cfg.doc_dir, page), 'r', - encoding='utf-8') as input_file: - content = input_file.read() - except IOError: + if not lang or lang == '-': + kwargs = {'lang': get_language_from_request(request)} + if page: + return HttpResponseRedirect( + reverse('help:manual-page', kwargs=dict(kwargs, page=page))) + + return HttpResponseRedirect(reverse('help:manual', kwargs=kwargs)) + + def read_file(lang, file_name): + """Read the page from disk and return contents or None.""" + page_file = pathlib.Path(cfg.doc_dir) / 'manual' / lang / file_name + return page_file.read_text() if page_file.exists() else None + + page = page or 'freedombox-manual' + content = read_file(lang, f'{page}.part.html') + if not content: + if lang != 'en': + return HttpResponseRedirect( + reverse('help:manual-page', kwargs=dict(lang='en', page=page))) + raise Http404 return TemplateResponse( @@ -138,17 +154,26 @@ def manual(request, page='freedombox-manual.part.html'): def download_manual(request): """Serve the PDF version of the manual from the 'doc' directory""" - files = [ - os.path.join(cfg.doc_dir, file_name) - for file_name in ['freedombox-manual.pdf.gz', 'freedombox-manual.pdf'] - if os.path.isfile(os.path.join(cfg.doc_dir, file_name)) - ] + language_code = get_language_from_request(request) - if not files: + def get_manual_file_name(language_code): + for file_name in ['freedombox-manual.pdf.gz', 'freedombox-manual.pdf']: + name = os.path.join(cfg.doc_dir, 'manual', language_code, + file_name) + if os.path.isfile(name): + return name + + return None + + manual_file_name = get_manual_file_name( + language_code) or get_manual_file_name('en') + + if not manual_file_name: raise Http404 - (content_type, encoding) = mimetypes.guess_type(files[0]) - with open(files[0], 'rb') as file_handle: + (content_type, encoding) = mimetypes.guess_type(manual_file_name) + + with open(manual_file_name, 'rb') as file_handle: response = HttpResponse(File(file_handle), content_type=content_type) if encoding: response['Content-Encoding'] = encoding diff --git a/plinth/modules/help/urls.py b/plinth/modules/help/urls.py index 461d28f2b..960b3279d 100644 --- a/plinth/modules/help/urls.py +++ b/plinth/modules/help/urls.py @@ -32,10 +32,12 @@ urlpatterns = [ url(r'^help/contribute/$', non_admin_view(views.contribute), name='contribute'), url(r'^help/manual/$', non_admin_view(views.manual), name='manual'), - url(r'^help/manual/download/$', non_admin_view(views.download_manual), + url(r'^help/manual/(?P\w*(-\w*)?)/$', non_admin_view(views.manual), + name='manual'), + url(r'^help/manual/(?P\w*(-\w*)?)/(?P[\w-]+)$', + non_admin_view(views.manual), name='manual-page'), + url(r'^help/manual-download/$', non_admin_view(views.download_manual), name='download-manual'), - url(r'^help/manual/(?P[\w-]+)?/?$', non_admin_view(views.manual), - name='manual-page'), url(r'^help/status-log/$', non_admin_view(views.status_log), name='status-log'), ] diff --git a/plinth/modules/infinoted/__init__.py b/plinth/modules/infinoted/__init__.py index ab5446e2e..a2def39d7 100644 --- a/plinth/modules/infinoted/__init__.py +++ b/plinth/modules/infinoted/__init__.py @@ -37,6 +37,8 @@ managed_services = ['infinoted'] managed_packages = ['infinoted'] +manual_page = 'Infinoted' + name = _('infinoted') short_description = _('Gobby Server') diff --git a/plinth/modules/power/templates/power_restart.html b/plinth/modules/power/templates/power_restart.html index 5d1803eb1..6f5526bd9 100644 --- a/plinth/modules/power/templates/power_restart.html +++ b/plinth/modules/power/templates/power_restart.html @@ -38,7 +38,7 @@ {% if manual_page %}

- + {% trans 'Learn more...' %}

diff --git a/plinth/modules/power/templates/power_shutdown.html b/plinth/modules/power/templates/power_shutdown.html index b5f19b683..6ce896b10 100644 --- a/plinth/modules/power/templates/power_shutdown.html +++ b/plinth/modules/power/templates/power_shutdown.html @@ -37,7 +37,7 @@ {% if manual_page %}

- + {% trans 'Learn more...' %}

diff --git a/plinth/modules/sharing/templates/sharing.html b/plinth/modules/sharing/templates/sharing.html index bd4dbc369..e37ecb861 100644 --- a/plinth/modules/sharing/templates/sharing.html +++ b/plinth/modules/sharing/templates/sharing.html @@ -67,8 +67,8 @@ {{ share.name }} {{ share.path }} - + {{ share.url }} diff --git a/plinth/modules/ssh/__init__.py b/plinth/modules/ssh/__init__.py index 2169ab7a2..5a079d64b 100644 --- a/plinth/modules/ssh/__init__.py +++ b/plinth/modules/ssh/__init__.py @@ -105,3 +105,9 @@ def get_host_keys(): host_keys.append(match.groupdict()) return host_keys + + +def is_password_authentication_disabled(): + """Return if ssh password authentication is enabled.""" + return actions.superuser_run('ssh', + ['get-password-config']).strip() == 'no' diff --git a/plinth/modules/config/templates/config.html b/plinth/modules/ssh/forms.py similarity index 54% rename from plinth/modules/config/templates/config.html rename to plinth/modules/ssh/forms.py index 39fb5bd65..439e55890 100644 --- a/plinth/modules/config/templates/config.html +++ b/plinth/modules/ssh/forms.py @@ -1,5 +1,3 @@ -{% extends "base.html" %} -{% comment %} # # This file is part of FreedomBox. # @@ -16,33 +14,22 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # -{% endcomment %} +""" +FreedomBox configuration form for OpenSSH server. +""" -{% load bootstrap %} -{% load i18n %} -{% load static %} +from django import forms +from django.utils.translation import ugettext_lazy as _ -{% block content %} +from plinth.forms import AppForm - {% block pagetitle %} -

{{ title }}

- {% endblock %} - {% if manual_page %} -

- - {% trans 'Learn more...' %} - -

- {% endif %} - -
- {% csrf_token %} - - {{ form|bootstrap }} - - -
- -{% endblock %} +class SSHServerForm(AppForm): + """SSH server configuration form.""" + password_auth_disabled = forms.BooleanField( + label=_('Disable password authentication'), + help_text=_('Improves security by preventing password guessing. ' + 'Ensure that you have setup SSH keys in your ' + 'administrator user account before enabling this option.'), + required=False, + ) diff --git a/plinth/modules/ssh/views.py b/plinth/modules/ssh/views.py index 83ce5b5f0..fc913085d 100644 --- a/plinth/modules/ssh/views.py +++ b/plinth/modules/ssh/views.py @@ -17,10 +17,16 @@ """ Views for the SSH module """ +from django.contrib import messages +from django.utils.translation import ugettext_lazy as _ +from plinth import actions from plinth.modules import ssh from plinth.views import AppView +from . import is_password_authentication_disabled +from .forms import SSHServerForm + class SshAppView(AppView): app_id = 'ssh' @@ -28,9 +34,43 @@ class SshAppView(AppView): description = ssh.description port_forwarding_info = ssh.port_forwarding_info template_name = 'ssh.html' + form_class = SSHServerForm def get_context_data(self, *args, **kwargs): context = super().get_context_data(**kwargs) context['host_keys'] = ssh.get_host_keys() return context + + def get_initial(self): + """Initial form value""" + initial = super().get_initial() + initial.update({ + 'password_auth_disabled': is_password_authentication_disabled(), + }) + + return initial + + def form_valid(self, form): + """Apply changes from the form""" + old_config = self.get_initial() + new_config = form.cleaned_data + + def is_field_changed(field): + return old_config[field] != new_config[field] + + passwd_auth_changed = is_field_changed('password_auth_disabled') + if passwd_auth_changed: + if new_config['password_auth_disabled']: + passwd_auth = 'no' + message = _('SSH authentication with password disabled.') + else: + passwd_auth = 'yes' + message = _('SSH authentication with password enabled.') + + actions.superuser_run( + 'ssh', ['set-password-config', '--value', passwd_auth]) + actions.superuser_run('service', ['reload', 'ssh']) + messages.success(self.request, message) + + return super().form_valid(form) diff --git a/plinth/modules/storage/templates/storage.html b/plinth/modules/storage/templates/storage.html index 93f028691..dc2b162ee 100644 --- a/plinth/modules/storage/templates/storage.html +++ b/plinth/modules/storage/templates/storage.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends "app.html" %} {% comment %} # # This file is part of FreedomBox. @@ -30,25 +30,7 @@ {% endblock %} -{% block content %} - - {% block pagetitle %} -

{{ title }}

- {% endblock %} - - {% block description %} - {% for paragraph in description %} -

{{ paragraph|safe }}

- {% endfor %} - {% endblock %} - - {% if manual_page %} -

- - {% trans 'Learn more...' %} - -

- {% endif %} +{% block configuration %}

{% trans "The following storage devices are in use:" %}

@@ -121,9 +103,4 @@

{% endif %} - {% block status %} - - {{ block.super }} - - {% endblock %} {% endblock %} diff --git a/plinth/modules/storage/urls.py b/plinth/modules/storage/urls.py index b39b07bb4..493d6e894 100644 --- a/plinth/modules/storage/urls.py +++ b/plinth/modules/storage/urls.py @@ -23,7 +23,7 @@ from django.conf.urls import url from . import views urlpatterns = [ - url(r'^sys/storage/$', views.index, name='index'), + url(r'^sys/storage/$', views.StorageAppView.as_view(), name='index'), url(r'^sys/storage/expand$', views.expand, name='expand'), url(r'^sys/storage/eject/(?P[A-Za-z0-9%_.\-~]+)/$', views.eject, name='eject') diff --git a/plinth/modules/storage/views.py b/plinth/modules/storage/views.py index 5afd5b922..880ee1b2e 100644 --- a/plinth/modules/storage/views.py +++ b/plinth/modules/storage/views.py @@ -29,7 +29,7 @@ from django.urls import reverse from django.utils.translation import ugettext as _ from django.views.decorators.http import require_POST -from plinth import actions +from plinth import actions, views from plinth.errors import PlinthError from plinth.modules import storage from plinth.utils import format_lazy, is_user_admin @@ -39,23 +39,32 @@ from . import get_disk_info, get_error_message logger = logging.getLogger(__name__) -def index(request): - """Show connection list.""" - disks = storage.get_disks() - root_device = storage.get_root_device(disks) - expandable_root_size = storage.is_expandable(root_device) - expandable_root_size = storage.format_bytes(expandable_root_size) +class StorageAppView(views.AppView): + """Show storage information.""" + name = storage.name + description = storage.description + manual_page = storage.manual_page + app_id = 'storage' + template_name = 'storage.html' + show_status_block = False - warn_about_low_disk_space(request) + def render_to_response(self, context, **response_kwargs): + """Add disk space warning to the view.""" + warn_about_low_disk_space(self.request) + return super().render_to_response(context, **response_kwargs) - return TemplateResponse( - request, 'storage.html', { - 'title': _('Storage'), - 'description': storage.description, - 'disks': disks, - 'manual_page': storage.manual_page, - 'expandable_root_size': expandable_root_size - }) + def get_context_data(self, *args, **kwargs): + """Return template context data.""" + context = super().get_context_data(*args, **kwargs) + + disks = storage.get_disks() + root_device = storage.get_root_device(disks) + expandable_root_size = storage.is_expandable(root_device) + expandable_root_size = storage.format_bytes(expandable_root_size) + + context['disks'] = disks + context['expandable_root_size'] = expandable_root_size + return context def expand(request): @@ -83,8 +92,8 @@ def expand_partition(request, device): except Exception as exception: messages.error( request, - _('Error expanding partition: {exception}') - .format(exception=exception)) + _('Error expanding partition: {exception}').format( + exception=exception)) else: messages.success(request, _('Partition expanded successfully.')) @@ -129,9 +138,9 @@ def eject(request, device_path): if drive: messages.success( request, - _('{drive_vendor} {drive_model} can be safely unplugged.') - .format(drive_vendor=drive['vendor'], - drive_model=drive['model'])) + _('{drive_vendor} {drive_model} can be safely unplugged.'). + format(drive_vendor=drive['vendor'], + drive_model=drive['model'])) else: messages.success(request, _('Device can be safely unplugged.')) except Exception as exception: diff --git a/plinth/templates/app.html b/plinth/templates/app.html index 727a0e56c..d3077de16 100644 --- a/plinth/templates/app.html +++ b/plinth/templates/app.html @@ -39,7 +39,7 @@ {% if manual_page %}

- + {% trans 'Learn more...' %}

diff --git a/plinth/templates/setup.html b/plinth/templates/setup.html index 476b6a2f7..60bf8c64e 100644 --- a/plinth/templates/setup.html +++ b/plinth/templates/setup.html @@ -44,7 +44,7 @@ {% if setup_helper.module.manual_page %}

- + {% trans 'Learn more...' %}

diff --git a/plinth/templates/simple_app.html b/plinth/templates/simple_app.html index 2dcf75043..b812b752c 100644 --- a/plinth/templates/simple_app.html +++ b/plinth/templates/simple_app.html @@ -34,7 +34,7 @@ {% if manual_page %}

- + {% trans 'Learn more...' %}

diff --git a/plinth/tests/test_app.py b/plinth/tests/test_app.py index 3afd40caa..9f8c73a37 100644 --- a/plinth/tests/test_app.py +++ b/plinth/tests/test_app.py @@ -25,7 +25,7 @@ import pytest from plinth.app import App, Component, FollowerComponent, LeaderComponent -class TestApp(App): +class AppTest(App): """Sample App for testing.""" app_id = 'test-app' @@ -38,7 +38,7 @@ class LeaderTest(FollowerComponent): @pytest.fixture(name='app_with_components') def fixture_app_with_components(): """Setup an app with some components.""" - app = TestApp() + app = AppTest() app.add(FollowerComponent('test-follower-1')) app.add(FollowerComponent('test-follower-2')) app.add(LeaderTest('test-leader-1')) @@ -54,7 +54,7 @@ def fixture_empty_apps(): def test_app_instantiation(): """Test that App is instantiated properly.""" - app = TestApp() + app = AppTest() assert isinstance(app.components, collections.OrderedDict) assert not app.components assert app.app_id == 'test-app' @@ -64,13 +64,13 @@ def test_app_instantiation(): def test_get(): """Test that an app can be correctly retrieved.""" - app = TestApp() + app = AppTest() assert App.get(app.app_id) == app def test_app_add(): """Test adding a components to an App.""" - app = TestApp() + app = AppTest() component = Component('test-component') return_value = app.add(component) assert len(app.components) == 1 @@ -157,7 +157,7 @@ def test_app_is_enabled(app_with_components): def test_app_is_enabled_with_no_leader_components(): """When there are not leader components, app.is_enabled() returns True.""" - app = TestApp() + app = AppTest() assert app.is_enabled() diff --git a/plinth/tests/test_cfg.py b/plinth/tests/test_cfg.py index 6f478b497..486aa84af 100644 --- a/plinth/tests/test_cfg.py +++ b/plinth/tests/test_cfg.py @@ -90,7 +90,8 @@ def test_read_primary_config_file(): def test_read_fallback_config_file(): """Verify that the correct fallback config file is used""" - fallback_root = os.path.realpath('.') + test_dir = os.path.dirname(os.path.realpath(__file__)) + fallback_root = os.path.realpath(os.path.join(test_dir, '..', '..')) fallback_config_file = os.path.join(fallback_root, 'plinth.config') config_path, root_directory = cfg.get_fallback_config_paths() cfg.read(config_path, root_directory) diff --git a/plinth/views.py b/plinth/views.py index 42aaae7e0..57d811603 100644 --- a/plinth/views.py +++ b/plinth/views.py @@ -34,7 +34,6 @@ from plinth import package from plinth.app import App from plinth.daemon import app_is_running from plinth.modules.config import get_advanced_mode -from plinth.modules.storage import views as disk_views from plinth.translation import get_language_from_request, set_language from . import forms, frontpage @@ -54,6 +53,7 @@ def index(request): ] selected_shortcut = selected_shortcut[0] if selected_shortcut else None + from plinth.modules.storage import views as disk_views disk_views.warn_about_low_disk_space(request) return TemplateResponse( @@ -77,6 +77,7 @@ class AppsIndexView(TemplateView): def system_index(request): """Serve the system index page.""" + from plinth.modules.storage import views as disk_views disk_views.warn_about_low_disk_space(request) return TemplateResponse(request, 'system.html', {'advanced_mode': get_advanced_mode()}) diff --git a/plinth/web_server.py b/plinth/web_server.py index 1e8410501..a05679d3d 100644 --- a/plinth/web_server.py +++ b/plinth/web_server.py @@ -71,10 +71,12 @@ def init(): _mount_static_directory('/usr/share/javascript', '/javascript') - manual_dir = os.path.join(cfg.doc_dir, 'images') - manual_url = '/'.join([cfg.server_dir, 'help/manual/images']) \ - .replace('//', '/') - _mount_static_directory(manual_dir, manual_url) + langs = os.listdir(os.path.join(cfg.doc_dir, 'manual')) + for lang in langs: + manual_dir = os.path.join(cfg.doc_dir, 'manual', lang, 'images') + manual_url = '/'.join([cfg.server_dir, f'help/manual/{lang}/images']) \ + .replace('//', '/') + _mount_static_directory(manual_dir, manual_url) for module_name, module in module_loader.loaded_modules.items(): module_path = os.path.dirname(module.__file__) diff --git a/setup.py b/setup.py index a4917147a..01cd31791 100755 --- a/setup.py +++ b/setup.py @@ -44,7 +44,6 @@ DIRECTORIES_TO_CREATE = [ ] DIRECTORIES_TO_COPY = [ - ('/usr/share/doc/freedombox', 'doc'), ('/usr/share/plinth/static', 'static'), ] @@ -151,9 +150,18 @@ 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'] + if self.root: + root = os.path.abspath(self.root) + command.append(f'DESTDIR={root}') + + subprocess.check_call(command) + def run(self): """Execute install command""" - subprocess.check_call(['make', '-C', 'doc']) + self._run_doc_install() install_data.run(self) # Old style base class @@ -240,7 +248,7 @@ setuptools.setup( scripts=['bin/plinth'], license='COPYING.md', classifiers=[ - 'Development Status :: 3 - Alpha', + 'Development Status :: 5 - Production/Stable', 'Environment :: Web Environment', 'Framework :: Django', 'Intended Audience :: End Users/Desktop', @@ -250,9 +258,36 @@ setuptools.setup( 'Operating System :: POSIX :: Linux', 'Programming Language :: Python', 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3 :: Only', 'Programming Language :: Unix Shell', + 'Topic :: Communications', + 'Topic :: Communications :: Chat', + 'Topic :: Communications :: Chat :: Internet Relay Chat', + 'Topic :: Communications :: File Sharing', + 'Topic :: Internet', + 'Topic :: Internet :: Name Service (DNS)' + 'Topic :: Internet :: Proxy Servers', + 'Topic :: Internet :: WWW/HTTP', + 'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Wiki', + 'Topic :: Internet :: WWW/HTTP :: WSGI', 'Topic :: Internet :: WWW/HTTP :: WSGI :: Application', + 'Topic :: Office/Business', + 'Topic :: Office/Business :: Scheduling', + 'Topic :: Security', + 'Topic :: System' + 'Topic :: System :: Archiving', + 'Topic :: System :: Archiving :: Backup', + 'Topic :: System :: Distributed Computing' + 'Topic :: System :: Filesystems', + 'Topic :: System :: Installation/Setup', + 'Topic :: System :: Networking', + 'Topic :: System :: Networking :: Firewalls', + 'Topic :: System :: Operating System', + 'Topic :: System :: Software Distribution' 'Topic :: System :: Systems Administration', + 'Topic :: System :: Systems Administration :: Authentication/Directory', + 'Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP ', + 'Topic :: System :: System Shells', ], setup_requires=['pytest-runner', 'setuptools-git'], install_requires=[ @@ -280,7 +315,8 @@ setuptools.setup( }, exclude_package_data={'': ['*/data/*']}, data_files=_gather_data_files() + - [('/usr/share/plinth/actions', glob.glob(os.path.join('actions', '*'))), + [('/usr/share/plinth/actions', glob.glob( + os.path.join('actions', '[a-z]*'))), ('/usr/share/man/man1', ['doc/plinth.1'])], cmdclass={ 'install': CustomInstall,