https://<your freedombox>/deluge. You will need to enter a password to login: https://<your freedombox>/deluge. You will need to enter a password to login: MyWebName.comhttps://MyWebName.comMyWebName.comhttps://MyWebName.comhttps://<your freedombox>/mldonkey. Users belonging to the https://<your freedombox>/mldonkey. Users belonging to the internal and external appropriately. nmcli command, see its man page. Also for a full list of configuration settings and type of connections accepted by Network Manager see: nmcli command, see its man page. Also for a full list of configuration settings and type of connections accepted by Network Manager see: ip addr should show a tun0 connection. traceroute freedombox.org should show you the ip address of the VPN server as the first hop. ip addr should show a tun0 connection. traceroute freedombox.org should show you the ip address of the VPN server as the first hop. enable-edit-actions in /etc/privoxy/config to 1. Before doing so, read carefully the manual, especially: EDIT button on the configuration screen in http://config.privoxy.org/. enable-edit-actions in /etc/privoxy/config to 1. Before doing so, read carefully the manual, especially: EDIT button on the configuration screen in http://config.privoxy.org/. irc://irc.debian.org/freedombox. If your FreedomBox is running Connect to Core. Add button to launch Add Core Account dialog. 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. OK in the Add Core Account dialog, you should see the core account in the Connect to Core dialog. OK to connect to it. Untrusted Security Certificate warning and need to accept the server certificate. Continue. Then you will be asked if you wish to accept the certificate permanently. Select Forever. Core Configuration Wizard. Select Next. 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. Select Storage Backend page, select SQLite and click Commit. Quassel IRC wizard to configure your IRC connections. Click Next. 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 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). 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. Setup Network Connection dialog, provide a list of IRC channels (such as #freedombox) to join upon connecting to the network. Click Save & Connect. All Chats pane on the left of the Quassel Client main window. irc://irc.debian.org/freedombox. If your FreedomBox is running Connect to Core. Add button to launch Add Core Account dialog. 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. OK in the Add Core Account dialog, you should see the core account in the Connect to Core dialog. OK to connect to it. Untrusted Security Certificate warning and need to accept the server certificate. Continue. Then you will be asked if you wish to accept the certificate permanently. Select Forever. Core Configuration Wizard. Select Next. 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. Select Storage Backend page, select SQLite and click Commit. Quassel IRC wizard to configure your IRC connections. Click Next. 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 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). 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. Setup Network Connection dialog, provide a list of IRC channels (such as #freedombox) to join upon connecting to the network. Click Save & Connect. All Chats pane on the left of the Quassel Client main window. --export-storage feature that is responsible for data migration. This feature is not available in radicale 2.x unfortunately. --export-storage feature that is responsible for data migration. This feature is not available in radicale 2.x unfortunately. https://<your freedombox>/roundcube. Enter your username and password. The username for many mail services will be the full email address such as https://<your freedombox>/roundcube. Enter your username and password. The username for many mail services will be the full email address such as 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. Admin users are able to log in using ssh (see Logging In below) and have superuser privileges via sudo. sudo ./bin/passwd-in-image <image-file> fbx. 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 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. libpam-abl package that FreedomBox installs by default. To control this behavior consult libpam-abl documentation. 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. Admin users are able to log in using ssh (see Logging In below) and have superuser privileges via sudo. sudo ./bin/passwd-in-image <image-file> fbx. 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 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. libpam-abl package that FreedomBox installs by default. To control this behavior consult libpam-abl documentation. admin username (see above). admin username, and ADDRESS with the hidden service address for your FreedomBox. fbx default user is not managed by Plinth and its password cannot be changed in the web interface. admin username (see above). admin username, and ADDRESS with the onion service address for your FreedomBox. fbx default user is not managed by Plinth and its password cannot be changed in the web interface. all_proxy environment variable: all_proxy environment variable: 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. 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. apt-get update asks for a confirmation to change apt-get update asks for a confirmation to change https://<your freedombox>/plinth/apps/xmpp/jsxc/. It will automatically check the BOSH server connection to the configured domain name. https://<your freedombox>/plinth/apps/xmpp/jsxc/. It will automatically check the BOSH server connection to the configured domain name. all_proxy environment variable: admin username, and ADDRESS with the hidden service address for your FreedomBox. admin username, and ADDRESS with the onion service address for your FreedomBox. __init__.py indicates that the directory in which it is present is a Python module. For now, it is an empty file. 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 plinth/modules/ directory structure into any Python path and still be discovered as plinth.modules.*. data/etc/plinth/modules-enabled/. Let us create this file ttrss: /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. urls.py write the following: /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 __init__.py add the following: 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. ttrss:index and not just index. __init__.py. 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. forms.py. views.py, let us add a view that can handle the URL we have provided above. 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. get_status() method. Let us implement that method in views.py. __init__.py. 50-tt-rss is enabled. 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. 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.
- -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. _apply_changes() to actually get the work done. Let us implement that method in views.py. 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. actions/ttrss. /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. 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. /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. 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. _() method call. Let us do that for the menu item of the application too. 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. 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. __init__.py add the top: init() call order guarantees that other applications that this application depends on will be initialized before this application is initialized. 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: plinth.modules.apps. 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. /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. 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.run() except the command is run with superuser privelages. Menu.add_item() and Menu.add_urlname() for adding items to this menu or its children. 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(). 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_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(). 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. sender object should identify which application made the change. enabled is a boolean that signifies whether the application is enabled (= True) or disabled (= False). /home/<un_usuario_de_plinth>/public_htmlUser 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. /home/<un_usuario_de_plinth>/public_htmlUser 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. https://<tu freedombox>/deluge. Necesitarás introducir una contraseña para ingresar: deluge. La primera vez que ingreses https://<tu freedombox>/deluge. Necesitarás introducir una contraseña para ingresar: deluge. La primera vez que ingreses .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 .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 MiWeb.comhttps://MiWeb.comMiWeb.comhttps://MiWeb.comhttps://<tu_freedombox>/mldonkey. https://<tu_freedombox>/mldonkey. Minetest en esta FreedomBox, en su puerto por defecto (30000). Para conectar al servidor se necesita un Minetest en esta FreedomBox, en su puerto por defecto (30000). Para conectar al servidor se necesita un admin usando 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". BATMAN (con mayúsculas). nmcli mira su página man. Para obtener una lista completa de configuraciones y tipos de conexión que acepta Network Manager mira: nmcli mira su página man. Para obtener una lista completa de configuraciones y tipos de conexión que acepta Network Manager mira: <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. <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. <usuario>.ovpn. <usuario>.opvn que acabas de descargar. Pon un nombre a la conexión y graba el perfil. ip addr debe mostrar una conexión tun0. traceroute freedombox.org debiera mostrar la dirección IP del servidor VPN como primer salto. <usuario>.ovpn. <usuario>.opvn que acabas de descargar. Pon un nombre a la conexión y graba el perfil. ip addr debe mostrar una conexión tun0. traceroute freedombox.org debiera mostrar la dirección IP del servidor VPN como primer salto. Network Manager puedes crear una conexión nueva importando el fichero: http://config.privoxy.org/ o en http://p.p. /etc/privoxy/config a 1. Antes de hacerlo lee el manual con atención, especialmente: EDITAR en la pantalla de configuración de http://config.privoxy.org/. http://config.privoxy.org/ o en http://p.p. /etc/privoxy/config a 1. Antes de hacerlo lee el manual con atención, especialmente: EDITAR en la pantalla de configuración de http://config.privoxy.org/. irc://irc.debian.org/freedombox. Si tu FreedomBox ejecuta Conectar con el Núcleo. Añadir para abrir el diálogo Añadir Cuenta al Núcleo. Nombre de Cuenta. Introduce el 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. 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. OK para conectar con él. Certificado de Seguridad Desconocido y necesitarás aceptar el certificado del servidor. Continuar. Se te preguntará si quieres aceptar el certificado permanentemente. Selecciona Para siempre. Asistente de Configuración del Núcleo. Selecciona Siguiente. 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. Seleccionar Backend de Almacenamiento selecciona SQLite y haz clic en Confirmar. Quassel IRC para configurar tus conexiones IRC. Haz clic en Siguiente. 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. 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). 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. 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. Todas las conversaciones de la izquierda de la ventana principal del Cliente Quassel. irc://irc.debian.org/freedombox. Si tu FreedomBox ejecuta Conectar con el Núcleo. Añadir para abrir el diálogo Añadir Cuenta al Núcleo. Nombre de Cuenta. Introduce el 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. 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. OK para conectar con él. Certificado de Seguridad Desconocido y necesitarás aceptar el certificado del servidor. Continuar. Se te preguntará si quieres aceptar el certificado permanentemente. Selecciona Para siempre. Asistente de Configuración del Núcleo. Selecciona Siguiente. 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. Seleccionar Backend de Almacenamiento selecciona SQLite y haz clic en Confirmar. Quassel IRC para configurar tus conexiones IRC. Haz clic en Siguiente. 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. 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). 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. 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. Todas las conversaciones de la izquierda de la ventana principal del Cliente Quassel. 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 --export-storage que es responsable de la migración de datos. Por desgracia esta funcionalidad ya no está disponible en Radicale 2.x. .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. /var/lib/radicale/collections. Los datos nuevos se crearán y usarán en el directorio /var/lib/radicale/collections/collections-root/. 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. 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 --export-storage que es responsable de la migración de datos. Por desgracia esta funcionalidad ya no está disponible en Radicale 2.x. .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. /var/lib/radicale/collections. Los datos nuevos se crearán y usarán en el directorio /var/lib/radicale/collections/collections-root/. 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. /repro/domains.html de la FreedomBox. /repro/addUser.html. /repro/domains.html de la FreedomBox. /repro/addUser.html. 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 imaps://imap.servicio_de_ejemplo.org. imaps://imap.gmail.com. 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 imaps://imap.servicio_de_ejemplo.org. imaps://imap.gmail.com. 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. Admin pueden ingresar mediante ssh (abajo se explica cómo) y escalar sus privilegios a superusuario mediante sudo. fbx pero no tiene contraseña establecida, así que no se puede ingresar con esta cuenta. freedom-maker que permite establecer la contraseña de esta cuenta si fuera necesario: freedom-maker en sudo ./bin/passwd-in-image <archivo_de_imagen> fbx. 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 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. libpam-abl que FreedomBox instala por defecto. Para controlar este comportamiento consulta la documentación de libpam-abl. netcat-openbsd. ~/.ssh/config para habilitar conexiones sobre Tor. 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. Admin pueden ingresar mediante ssh (abajo se explica cómo) y escalar sus privilegios a superusuario mediante sudo. fbx pero no tiene contraseña establecida, así que no se puede ingresar con esta cuenta. freedom-maker que permite establecer la contraseña de esta cuenta si fuera necesario: freedom-maker en sudo ./bin/passwd-in-image <archivo_de_imagen> fbx. 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 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. libpam-abl que FreedomBox instala por defecto. Para controlar este comportamiento consulta la documentación de libpam-abl. netcat-openbsd. ~/.ssh/config para habilitar conexiones sobre Tor. admin (ver arriba). admin y DIRECCION por la dirección del servicio oculto de SSH de tu FreedomBox. root root no puedes romperlo todo accidentalmente. fbx no se administra en Plinth y su contraseña no se puede cambiar desde la interfaz web. admin (ver arriba). admin y DIRECCION por la dirección del servicio Tor Onion para SSH de tu FreedomBox. root root no puedes romperlo todo accidentalmente. fbx no se administra en Plinth y su contraseña no se puede cambiar desde la interfaz web. http://<tu_freedombox>:1080/. http://<tu_freedombox>:1080/. /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. all_proxy: /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. all_proxy: 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. sftp para ver el directorio de descargas usando un gestor de archivos o un navegador apropiados (p.ej. 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. sftp para ver el directorio de descargas usando un gestor de archivos o un navegador apropiados (p.ej. apt-get update te pide confirmación para algo responde que 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. apt-get update te pide confirmación para algo responde que 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. admin podrán ingresar en todos los servicios. También pueden ingresar al sistema por SSH y escalar a privilegios administrativos (sudo). admin podrán ingresar en todos los servicios. También pueden ingresar al sistema por SSH y escalar a privilegios administrativos (sudo). https://<tu_freedombox>/plinth/apps/xmpp/jsxc/. Automáticamente comprobará la conexión del servidor BOSH al nombre de dominio configurado. https://<tu_freedombox>/plinth/apps/xmpp/jsxc/. Automáticamente comprobará la conexión del servidor BOSH al nombre de dominio configurado. all_proxy: traceroute freedombox.org debiera mostrar la dirección IP del servidor VPN como primer salto. Network Manager puedes crear una conexión nueva importando el fichero: admin usando netcat-openbsd. netcat-openbsd. ~/.ssh/config para habilitar conexiones sobre Tor. admin y DIRECCION por la dirección del servicio oculto de SSH de tu FreedomBox. admin y DIRECCION por la dirección del servicio Tor Onion para SSH de tu FreedomBox. __init__.py indicates that the directory in which it is present is a Python module. For now, it is an empty file. 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 plinth/modules/ directory structure into any Python path and still be discovered as plinth.modules.*. data/etc/plinth/modules-enabled/. Let us create this file ttrss: /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. urls.py write the following: /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 __init__.py add the following: 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. ttrss:index and not just index. __init__.py. 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. forms.py. views.py, let us add a view that can handle the URL we have provided above. 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. get_status() method. Let us implement that method in views.py. __init__.py. 50-tt-rss is enabled. 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. 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.
- -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. _apply_changes() to actually get the work done. Let us implement that method in views.py. 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. actions/ttrss. /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. 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. /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. 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. _() method call. Let us do that for the menu item of the application too. 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. 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. __init__.py add the top: init() call order guarantees that other applications that this application depends on will be initialized before this application is initialized. 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: plinth.modules.apps. 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. /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. 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.run() except the command is run with superuser privelages. Menu.add_item() and Menu.add_urlname() for adding items to this menu or its children. 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(). 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_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(). 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. sender object should identify which application made the change. enabled is a boolean that signifies whether the application is enabled (= True) or disabled (= False).