<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bbbhltz</id>
	<title>Alpine Linux - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bbbhltz"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Bbbhltz"/>
	<updated>2026-05-01T12:00:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User_talk:Bbbhltz&amp;diff=26660</id>
		<title>User talk:Bbbhltz</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User_talk:Bbbhltz&amp;diff=26660"/>
		<updated>2024-05-01T14:50:46Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: Replied to Thomas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi,&lt;br /&gt;
&lt;br /&gt;
I would like to add a page to the Wiki and contribute a my five cent.&lt;br /&gt;
&lt;br /&gt;
But I get a spammers not welcome error. How to proceed?&lt;br /&gt;
&lt;br /&gt;
Cheers,&lt;br /&gt;
&lt;br /&gt;
Thomas&lt;br /&gt;
&lt;br /&gt;
: Hi, &amp;lt;br&amp;gt;I would help but I don&#039;t have the privilege to add you to a different group. I mean, maybe I can? I saw your message on Mastodon, btw.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--[[User:Bbbhltz|bbbhltz]] ([[User talk:Bbbhltz|talk]]) 14:50, 1 May 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=24908</id>
		<title>LXQt</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=24908"/>
		<updated>2023-09-01T07:58:35Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* Optional Configuration */  use Path template instead of &amp;lt;code&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
[[File:LXQt Minimal Installation.png | thumb | LXQt 1.3.0 Basic Install with Papirus icons]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://lxqt-project.org/ LXQt]&#039;&#039;&#039; is a lightweight QT based desktop environment, LXQt was originally a port of LXDE to QT (called LXDE-Qt), it was created due to LXDE maintainer Hong Jen Yee being dissatisfied with GTK 3, on 21 July 2013 the LXDE(-Qt) and [https://en.wikipedia.org/wiki/Razor-qt Razor-qt] projects merged creating LXQt.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation|Install]] Alpine Linux&lt;br /&gt;
* [[Setting_up_a_new_user#Creating_a_new_user|Create a user account]] (optional but recommended)&lt;br /&gt;
* [[Repositories#Enabling_the_community_repository|Enable the Community repository]]&lt;br /&gt;
* [[Alpine_setup_scripts#setup-xorg-base|Install Xorg]]&lt;br /&gt;
&lt;br /&gt;
== Basic LXQt Desktop Installation ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|lxqt-desktop}} {{Pkg|lximage-qt}} {{Pkg|obconf-qt}} {{Pkg|pavucontrol-qt}} {{Pkg|screengrab}} \&lt;br /&gt;
    {{Pkg|arandr}} \&lt;br /&gt;
    {{Pkg|dbus}} \&lt;br /&gt;
    {{Pkg|sddm}} \&lt;br /&gt;
    {{Pkg|sddm-openrc}}}}&lt;br /&gt;
&lt;br /&gt;
{{Note|By default LXQt uses [[Openbox]] as its window manager (it is a dependency of the {{Pkg|lxqt-desktop}} package), but LXQt supports many different window managers, See: [https://github.com/lxqt/lxqt/wiki/ConfigWindowManagers Window Managers Configuration on the LXQt GitHub wiki]}}&lt;br /&gt;
&lt;br /&gt;
Starting dbus (desktop bus) service:&lt;br /&gt;
{{Cmd|# rc-service dbus start}}&lt;br /&gt;
&lt;br /&gt;
Enabling dbus to start on boot:&lt;br /&gt;
{{Cmd|# rc-update add dbus}}&lt;br /&gt;
&lt;br /&gt;
If dbus is not running it leads to issues like missing icons and keyboard shortcuts.&lt;br /&gt;
&lt;br /&gt;
Enabling udev service:&lt;br /&gt;
{{Cmd|# setup-devd udev}}&lt;br /&gt;
&lt;br /&gt;
== Starting LXQt ==&lt;br /&gt;
&lt;br /&gt;
=== With a display manager (DM) ===&lt;br /&gt;
&lt;br /&gt;
If the package {{Pkg|sddm}} has been installed, SDDM may be started to log in graphically with your new user.&lt;br /&gt;
{{Cmd|# rc-service sddm start}}&lt;br /&gt;
&lt;br /&gt;
After correct operation is verified, sddm can be enabled to start up during boot:&lt;br /&gt;
{{Cmd|# rc-update add sddm}}&lt;br /&gt;
&lt;br /&gt;
=== From the command line ===&lt;br /&gt;
&lt;br /&gt;
LXQt may be started with:&lt;br /&gt;
{{cmd|# startlxqt}}&lt;br /&gt;
&lt;br /&gt;
== Localized keyboard layout ==&lt;br /&gt;
&lt;br /&gt;
Preferences → LXQt Settings → Keyboard and Mouse → Keyboard Layout&lt;br /&gt;
&lt;br /&gt;
== Allowing shut down and reboot ==&lt;br /&gt;
&lt;br /&gt;
To enable users to shut down the machine or reboot, the packages {{Pkg|elogind}} and {{Pkg|polkit-elogind}} need to be installed.&lt;br /&gt;
{{Cmd|# apk add elogind polkit-elogind}}&lt;br /&gt;
&lt;br /&gt;
A reboot is required to let it take effect.&lt;br /&gt;
&lt;br /&gt;
== Auto-mounting USB drives ==&lt;br /&gt;
&lt;br /&gt;
To enable automatic mounting of USB drives, install these packages:&lt;br /&gt;
{{Cmd|# apk add gvfs udisks2}}&lt;br /&gt;
 &lt;br /&gt;
Depending on what devices you intend to mount, some additional packages may be needed:&lt;br /&gt;
{{Cmd|ntfs-3g        Stable, full-featured, read-write NTFS (driver)&lt;br /&gt;
gvfs-cdda      CDDA support for gvfs&lt;br /&gt;
gvfs-afp       AFP support for gvfs&lt;br /&gt;
gvfs-goa       GNOME Online Accounts support for gvfs&lt;br /&gt;
gvfs-mtp       MTP support for gvfs&lt;br /&gt;
gvfs-smb       Windows fileshare support for gvfs&lt;br /&gt;
gvfs-lang      Languages for package gvfs&lt;br /&gt;
gvfs-afc       Apple mobile devices support for gvfs&lt;br /&gt;
gvfs-nfs       NFS support for gvfs&lt;br /&gt;
gvfs-dev       Backends for the gio framework in GLib (development files)&lt;br /&gt;
gvfs-archive   Archiving support for gvfs&lt;br /&gt;
gvfs-dav       WebDAV support for gvfs&lt;br /&gt;
gvfs-fuse      FUSE support for gvfs&lt;br /&gt;
gvfs-gphoto2   gphoto2 support for gvfs&lt;br /&gt;
gvfs-avahi     DNS-SD support for gvfs}}&lt;br /&gt;
&lt;br /&gt;
To list descriptions of all gvfs- packages:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk info -d gvfs-*}}&lt;br /&gt;
&lt;br /&gt;
== Network browsing ==&lt;br /&gt;
&lt;br /&gt;
For browsing of network shares within LXQt that works with file associations, you can install the gvfs packages for the network protocols you use.&lt;br /&gt;
&lt;br /&gt;
For example, to browse in a SMB/cifs windows network:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add gvfs-smb}}&lt;br /&gt;
&lt;br /&gt;
(Check: If the above may already be sufficient for gvfs to initiate the fuse kernel module. Else, try to identify if there are necessary steps in:)&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add gvfs-fuse}}&lt;br /&gt;
&lt;br /&gt;
The OpenRC script for fuse is in a separate package.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add fuse-openrc}}&lt;br /&gt;
&lt;br /&gt;
Then the fuse service can be started manually.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service fuse start}}&lt;br /&gt;
&lt;br /&gt;
If it works, the fuse service can be added to start up automatically at boot time:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add fuse}}&lt;br /&gt;
&lt;br /&gt;
== Enabling privilege escalation GUI ==&lt;br /&gt;
&lt;br /&gt;
To enable the privilege escalation GUI for a doas/sudo user, you need to install {{Pkg|elogind}}, {{Pkg|polkit-elogind}}, and {{Pkg|sddm}}.&lt;br /&gt;
&lt;br /&gt;
To have elogind run, either make them start automatically at system start:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add elogind}}&lt;br /&gt;
&lt;br /&gt;
or start them manually for this time only:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service elogind start }}&lt;br /&gt;
&lt;br /&gt;
== Panel Widgets ==&lt;br /&gt;
&lt;br /&gt;
If you cannot add the CPU and System Statistics widgets to the panel, make sure {{Pkg|libstatgrab}} and {{Pkg|libsysstat}} are installed.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Icons and Fonts ===&lt;br /&gt;
&lt;br /&gt;
By default a Desktop Environments needs icons. {{Pkg|adwaita-icon-theme}} is a good start.&lt;br /&gt;
{{Cmd|# apk add adwaita-icon-theme}}&lt;br /&gt;
&lt;br /&gt;
See [[Fonts]] for more information on fonts.&lt;br /&gt;
&lt;br /&gt;
== Optional Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Screen Compositor ===&lt;br /&gt;
&lt;br /&gt;
To enable different effects (transparency, for example) {{Pkg|picom}} can be used.&lt;br /&gt;
&lt;br /&gt;
After installation, add it to the &#039;&#039;Autostart&#039;&#039; section of the &#039;&#039;&#039;LXQt Session Settings&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The default configuration is available in {{Path|/etc/xdg/picom.conf.example}}. For modifications, it can be copied to {{Path|~/.config/picom/picom.conf}} or {{Path|~/.config/picom.conf}}.&lt;br /&gt;
&lt;br /&gt;
Either modify the config file to your taste, or change the Autostart command line options. For example, &amp;lt;code&amp;gt;picom --vsync -r 12 --no-fading-openclose -b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Appearance Tweaking ===&lt;br /&gt;
&lt;br /&gt;
==== Location of appearance-related configuration files ====&lt;br /&gt;
&lt;br /&gt;
User-specific configuration is stored in {{Path|~/.config/lxqt/}}.&lt;br /&gt;
&lt;br /&gt;
LXQt themes are [https://doc.qt.io/qt-6/stylesheet.html qss stylesheets]. They are located in {{Path|/usr/share/lxqt/themes/}} or {{Path|~/.local/share/lxqt/themes}}.&lt;br /&gt;
&lt;br /&gt;
Qt Palette colors can be modified in lxqt-config-appearence &amp;gt; Widget Style &amp;gt; Qt Palette. Custom palettes are saved in {{Path|~/.local/share/lxqt/palettes/}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional QT Styles ====&lt;br /&gt;
&lt;br /&gt;
Several packages provide additional QT Styles:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|adwaita-qt}} {{Pkg|breeze}} {{Pkg|oxygen}}}}&lt;br /&gt;
&lt;br /&gt;
They also provide additional cursors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Consistant Theming ====&lt;br /&gt;
&lt;br /&gt;
Adding the KEY=VAL &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=lxqt&amp;lt;/code&amp;gt; to the Environment section of the Session Settings [https://github.com/lxqt/lxqt-qtplugin#configuration-usage is suggested by the LXQt developers]. Then every Qt5 program can load the theme plugin.&lt;br /&gt;
&lt;br /&gt;
Another option, however, is to to install the package {{Pkg|qt5ct}} (from [[Repositories | Testing]]) and appending the line &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=qt5ct&amp;lt;/code&amp;gt; to the environmental settings in the Environment section of the Session Settings will allow you to achieve a unified appearance between apps. Then, in the LXQt Appearance Configuration, under Widget Style, set Qt Style to &amp;lt;code&amp;gt;qt5ct-style&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Packages ====&lt;br /&gt;
&lt;br /&gt;
When using themes found around the web, it is possible that they are dependant on different packages. Consider using {{Pkg|qt5-qtgraphicaleffects}}, {{Pkg|qt5-qtquickcontrols}}, and {{Pkg|qt5-qtquickcontrols2}}.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-config-doc}} &lt;br /&gt;
* {{Pkg|lxqt-openssh-askpass-doc}}&lt;br /&gt;
* {{Pkg|lxqt-panel-doc}} &lt;br /&gt;
* {{Pkg|lxqt-policykit-doc}} &lt;br /&gt;
* {{Pkg|lxqt-runner-doc}} &lt;br /&gt;
* {{Pkg|lxqt-session-doc}}&lt;br /&gt;
* {{Pkg|lxqt-sudo-doc}}&lt;br /&gt;
&lt;br /&gt;
== Development files ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-globalkeys-dev}} &lt;br /&gt;
* {{Pkg|lxqt-panel-dev}}&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-build-tools}}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation#Post-Install|Post Install]]&lt;br /&gt;
* [[Desktop environments and Window managers]]&lt;br /&gt;
&lt;br /&gt;
= External Resources =&lt;br /&gt;
&lt;br /&gt;
* [https://lxqt.github.io/ LXQt Homepage]&lt;br /&gt;
* [https://github.com/lxqt/lxqt LXQt on GitHub]&lt;br /&gt;
* [https://wiki.archlinux.org/title/LXQt LXQt entry on ArchWiki]&lt;br /&gt;
* [https://github.com/sddm/sddm SDDM Project on GitHub]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
[[Category:Desktop Environments]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Kexec&amp;diff=24203</id>
		<title>Kexec</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Kexec&amp;diff=24203"/>
		<updated>2023-08-13T15:42:23Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: Added category, minor formatting and template changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://en.wikipedia.org/wiki/Kexec Kexec] is a system call that enables loading and booting into another kernel. This is useful for fast reboots that skip the BIOS or UEFI initialisation process.&lt;br /&gt;
&lt;br /&gt;
On a typical Alpine setup, it can be used via:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# kexec -l /boot/vmlinuz-edge --initrd \&lt;br /&gt;
    /boot/initramfs-edge --reuse-cmdline&lt;br /&gt;
&amp;amp;#35; kexec -e}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Running &amp;lt;code&amp;gt;kexec -e&amp;lt;/code&amp;gt; does not unmount any filesystems or gracefully shut down any services!}}&lt;br /&gt;
&lt;br /&gt;
There are no Alpine-specific considerations for Kexec. Please review the man page and existing references below of more details. This page is deliberately kept short in order to avoid duplicating existing documentation.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Kexec Gentoo Wiki: Kexec]&lt;br /&gt;
* [https://wiki.archlinux.org/title/Kexec ArchWiki: Kexec]&lt;br /&gt;
&lt;br /&gt;
[[Category: Booting]]&lt;br /&gt;
[[Category: Kernel]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Flatpak&amp;diff=24191</id>
		<title>Flatpak</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Flatpak&amp;diff=24191"/>
		<updated>2023-08-11T11:21:08Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* Runtime dependencies */ bullets, template use&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft|More documentation and testing is needed, but everything currently here should be safe to follow.}}&lt;br /&gt;
&lt;br /&gt;
Flatpak is a technology for building and distributing applications with the goal of having a universal package format for all Linux distributons, it is similar to [https://en.wikipedia.org/wiki/Snap_(software) Snap], &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup / Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Runtime dependencies ===&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|dbus}}&lt;br /&gt;
* {{Pkg|xdg-desktop-portal}}&lt;br /&gt;
* an implementation of &amp;lt;code&amp;gt;xdg-desktop-portal&amp;lt;/code&amp;gt;, e.g. {{Pkg|xdg-desktop-portal-gtk}}&lt;br /&gt;
&lt;br /&gt;
{{Note|If you are running a window manager from {{Path|.xinitrc}}, make sure you are running a &amp;lt;code&amp;gt;dbus&amp;lt;/code&amp;gt; session explicitly, i.e.:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# exec dbus-launch --exit-with-session your_favourite_wm}}}}&lt;br /&gt;
&lt;br /&gt;
=== Installing Flatpak Itself ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;From: https://flatpak.org/setup/Alpine/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|To install Flatpak you will need to enable the  Community repository, See: [[Repositories#Managing_repositories|Repositories - Managing repositories]]}}&lt;br /&gt;
&lt;br /&gt;
To install Flatpak run:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add {{Pkg|flatpak}}}}&lt;br /&gt;
&lt;br /&gt;
Next you need to add a repository, for this guide we will use the recommended repository, [https://flathub.org Flathub].&lt;br /&gt;
&lt;br /&gt;
{{cmd|$ flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo}}&lt;br /&gt;
&lt;br /&gt;
Now reboot to complete setup&lt;br /&gt;
&lt;br /&gt;
{{Note|graphical installation of Flatpak apps may not be possible with Alpine.}}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
To get all of the available options to use with the &#039;&#039;&#039;flatpak&#039;&#039;&#039; command run: &#039;&#039;&#039;flatpak --help&#039;&#039;&#039; or &#039;&#039;&#039;flatpak -h&#039;&#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
To search for applications run &#039;&#039;&#039;flatpak search &amp;lt;appplicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak search chromium&lt;br /&gt;
&lt;br /&gt;
Name                   Description                                                        Application ID                        Version       Branch  Remotes&lt;br /&gt;
Chromium Web Browser   The web browser from Chromium project                              org.chromium.Chromium                 96.0.4664.93  stable  flathub&lt;br /&gt;
Chromium B.S.U.        Fast paced, arcade-style, top-scrolling space shooter              net.sourceforge.chromium-bsu          0.9.16.1      stable  flathub&lt;br /&gt;
ungoogled-chromium     A lightweight approach to removing Google web service dependency   com.github.Eloston.UngoogledChromium  96.0.4664.45  stable  flathub&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install ===&lt;br /&gt;
&lt;br /&gt;
To install a package run &#039;&#039;&#039;flatpak install &amp;lt;applicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak install com.github.Eloston.UngoogledChromium&lt;br /&gt;
&lt;br /&gt;
Looking for matches…&lt;br /&gt;
&lt;br /&gt;
com.github.Eloston.UngoogledChromium permissions:&lt;br /&gt;
    ipc             network                 cups                   pulseaudio               wayland                       x11&lt;br /&gt;
    devices         file access [1]         dbus access [2]        bus ownership [3]        system dbus access [4]&lt;br /&gt;
&lt;br /&gt;
    [1] /run/.heim_org.h5l.kcm-socket, home, xdg-run/pipewire-0&lt;br /&gt;
    [2] org.freedesktop.FileManager1, org.freedesktop.Notifications, org.freedesktop.secrets, org.gnome.SessionManager&lt;br /&gt;
    [3] org.mpris.MediaPlayer2.chromium.*&lt;br /&gt;
    [4] org.freedesktop.Avahi, org.freedesktop.UPower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        ID                                                      Branch             Op            Remote             Download&lt;br /&gt;
 1.     com.github.Eloston.UngoogledChromium.Codecs             stable             i             flathub              &amp;lt; 1.1 MB&lt;br /&gt;
 2.     com.github.Eloston.UngoogledChromium.Locale             stable             i             flathub            &amp;lt; 112.8 kB&lt;br /&gt;
 3.     com.github.Eloston.UngoogledChromium                    stable             i             flathub            &amp;lt; 119.0 MB&lt;br /&gt;
&lt;br /&gt;
Proceed with these changes to the system installation? [Y/n]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or if you dont know or dont want to type the exact package name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak install chromium&lt;br /&gt;
&lt;br /&gt;
Looking for matches…&lt;br /&gt;
Similar refs found for ‘chromium’ in remote ‘flathub’ (system):&lt;br /&gt;
&lt;br /&gt;
   1) app/net.sourceforge.chromium-bsu/x86_64/stable&lt;br /&gt;
   2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable&lt;br /&gt;
   3) runtime/org.chromium.Chromium.Codecs/x86_64/stable&lt;br /&gt;
   4) app/org.chromium.Chromium/x86_64/stable&lt;br /&gt;
   5) app/com.github.Eloston.UngoogledChromium/x86_64/stable&lt;br /&gt;
&lt;br /&gt;
Which do you want to use (0 to abort)? [0-5]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Remove ===&lt;br /&gt;
&lt;br /&gt;
To remove a package run: &#039;&#039;&#039;flatpak remove &amp;lt;applicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak remove com.github.Eloston.UngoogledChromium&lt;br /&gt;
&lt;br /&gt;
        ID                                                     Branch           Op&lt;br /&gt;
 1.     com.github.Eloston.UngoogledChromium                   stable           r&lt;br /&gt;
 2.     com.github.Eloston.UngoogledChromium.Codecs            stable           r&lt;br /&gt;
 3.     com.github.Eloston.UngoogledChromium.Locale            stable           r&lt;br /&gt;
&lt;br /&gt;
Proceed with these changes to the system installation? [Y/n]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
or if you dont know or dont want to type the exact package name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak remove chromium&lt;br /&gt;
&lt;br /&gt;
Similar installed refs found for ‘chromium’:&lt;br /&gt;
&lt;br /&gt;
   1) app/com.github.Eloston.UngoogledChromium/x86_64/stable (system)&lt;br /&gt;
   2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable (system)&lt;br /&gt;
   3) All of the above&lt;br /&gt;
&lt;br /&gt;
Which do you want to use (0 to abort)? [0-3]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Developers ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.flatpak.org/en/latest/available-runtimes.html Flatpak - available runtimes]&lt;br /&gt;
&lt;br /&gt;
These are all hosted on [https://flathub.org/ Flathub.org].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Permission errors ===&lt;br /&gt;
&lt;br /&gt;
If you receive errors about permissions then you may need to add your user to the &#039;&#039;&#039;flatpak&#039;&#039;&#039; group.&lt;br /&gt;
&lt;br /&gt;
{{Note|You need to log out and log back in or reboot for the group change(s) to take effect}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fixing audio issues ===&lt;br /&gt;
&lt;br /&gt;
If you have a minimal setup and don&#039;t have access to audio devices you will need to set the XDG_RUNTIME_DIR variable. Save the following script in {{Path|/etc/profile.d/xdg_runtime_dir.sh}} and re-login to have it set up properly.&lt;br /&gt;
&lt;br /&gt;
 if test -z &amp;quot;${XDG_RUNTIME_DIR}&amp;quot;; then&lt;br /&gt;
   export XDG_RUNTIME_DIR=/tmp/$(id -u)&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
When you launch a Flatpak you will need to start pulseaudio as well:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ pulseaudio --start &amp;amp;&amp;amp; flatpak run com.example.Example}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://flatpak.org/ Flatpak]&lt;br /&gt;
* [https://flathub.org/ Flathub]&lt;br /&gt;
* [https://winepak.github.io/ Winepak]&lt;br /&gt;
&lt;br /&gt;
[[Category:Package Manager]]&lt;br /&gt;
[[Category: Desktop]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Flatpak&amp;diff=24190</id>
		<title>Flatpak</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Flatpak&amp;diff=24190"/>
		<updated>2023-08-11T11:19:49Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* Setup / Installation */ formatting, template use&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft|More documentation and testing is needed, but everything currently here should be safe to follow.}}&lt;br /&gt;
&lt;br /&gt;
Flatpak is a technology for building and distributing applications with the goal of having a universal package format for all Linux distributons, it is similar to [https://en.wikipedia.org/wiki/Snap_(software) Snap], &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup / Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Runtime dependencies ===&lt;br /&gt;
&lt;br /&gt;
- {{Pkg|dbus}}&lt;br /&gt;
&lt;br /&gt;
- {{Pkg|xdg-desktop-portal}}&lt;br /&gt;
&lt;br /&gt;
- an implementation of &amp;lt;code&amp;gt;xdg-desktop-portal&amp;lt;/code&amp;gt;, e.g. {{Pkg|xdg-desktop-portal-gtk}}&lt;br /&gt;
&lt;br /&gt;
Note if you are running a window manager from {{Path|.xinitrc}}, make sure you are running a &amp;lt;code&amp;gt;dbus&amp;lt;/code&amp;gt; session explicitly, i.e.:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# exec dbus-launch --exit-with-session your_favourite_wm}}&lt;br /&gt;
&lt;br /&gt;
=== Installing Flatpak Itself ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;From: https://flatpak.org/setup/Alpine/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|To install Flatpak you will need to enable the  Community repository, See: [[Repositories#Managing_repositories|Repositories - Managing repositories]]}}&lt;br /&gt;
&lt;br /&gt;
To install Flatpak run:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add {{Pkg|flatpak}}}}&lt;br /&gt;
&lt;br /&gt;
Next you need to add a repository, for this guide we will use the recommended repository, [https://flathub.org Flathub].&lt;br /&gt;
&lt;br /&gt;
{{cmd|$ flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo}}&lt;br /&gt;
&lt;br /&gt;
Now reboot to complete setup&lt;br /&gt;
&lt;br /&gt;
{{Note|graphical installation of Flatpak apps may not be possible with Alpine.}}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
To get all of the available options to use with the &#039;&#039;&#039;flatpak&#039;&#039;&#039; command run: &#039;&#039;&#039;flatpak --help&#039;&#039;&#039; or &#039;&#039;&#039;flatpak -h&#039;&#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
To search for applications run &#039;&#039;&#039;flatpak search &amp;lt;appplicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak search chromium&lt;br /&gt;
&lt;br /&gt;
Name                   Description                                                        Application ID                        Version       Branch  Remotes&lt;br /&gt;
Chromium Web Browser   The web browser from Chromium project                              org.chromium.Chromium                 96.0.4664.93  stable  flathub&lt;br /&gt;
Chromium B.S.U.        Fast paced, arcade-style, top-scrolling space shooter              net.sourceforge.chromium-bsu          0.9.16.1      stable  flathub&lt;br /&gt;
ungoogled-chromium     A lightweight approach to removing Google web service dependency   com.github.Eloston.UngoogledChromium  96.0.4664.45  stable  flathub&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install ===&lt;br /&gt;
&lt;br /&gt;
To install a package run &#039;&#039;&#039;flatpak install &amp;lt;applicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak install com.github.Eloston.UngoogledChromium&lt;br /&gt;
&lt;br /&gt;
Looking for matches…&lt;br /&gt;
&lt;br /&gt;
com.github.Eloston.UngoogledChromium permissions:&lt;br /&gt;
    ipc             network                 cups                   pulseaudio               wayland                       x11&lt;br /&gt;
    devices         file access [1]         dbus access [2]        bus ownership [3]        system dbus access [4]&lt;br /&gt;
&lt;br /&gt;
    [1] /run/.heim_org.h5l.kcm-socket, home, xdg-run/pipewire-0&lt;br /&gt;
    [2] org.freedesktop.FileManager1, org.freedesktop.Notifications, org.freedesktop.secrets, org.gnome.SessionManager&lt;br /&gt;
    [3] org.mpris.MediaPlayer2.chromium.*&lt;br /&gt;
    [4] org.freedesktop.Avahi, org.freedesktop.UPower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        ID                                                      Branch             Op            Remote             Download&lt;br /&gt;
 1.     com.github.Eloston.UngoogledChromium.Codecs             stable             i             flathub              &amp;lt; 1.1 MB&lt;br /&gt;
 2.     com.github.Eloston.UngoogledChromium.Locale             stable             i             flathub            &amp;lt; 112.8 kB&lt;br /&gt;
 3.     com.github.Eloston.UngoogledChromium                    stable             i             flathub            &amp;lt; 119.0 MB&lt;br /&gt;
&lt;br /&gt;
Proceed with these changes to the system installation? [Y/n]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or if you dont know or dont want to type the exact package name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak install chromium&lt;br /&gt;
&lt;br /&gt;
Looking for matches…&lt;br /&gt;
Similar refs found for ‘chromium’ in remote ‘flathub’ (system):&lt;br /&gt;
&lt;br /&gt;
   1) app/net.sourceforge.chromium-bsu/x86_64/stable&lt;br /&gt;
   2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable&lt;br /&gt;
   3) runtime/org.chromium.Chromium.Codecs/x86_64/stable&lt;br /&gt;
   4) app/org.chromium.Chromium/x86_64/stable&lt;br /&gt;
   5) app/com.github.Eloston.UngoogledChromium/x86_64/stable&lt;br /&gt;
&lt;br /&gt;
Which do you want to use (0 to abort)? [0-5]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Remove ===&lt;br /&gt;
&lt;br /&gt;
To remove a package run: &#039;&#039;&#039;flatpak remove &amp;lt;applicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak remove com.github.Eloston.UngoogledChromium&lt;br /&gt;
&lt;br /&gt;
        ID                                                     Branch           Op&lt;br /&gt;
 1.     com.github.Eloston.UngoogledChromium                   stable           r&lt;br /&gt;
 2.     com.github.Eloston.UngoogledChromium.Codecs            stable           r&lt;br /&gt;
 3.     com.github.Eloston.UngoogledChromium.Locale            stable           r&lt;br /&gt;
&lt;br /&gt;
Proceed with these changes to the system installation? [Y/n]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
or if you dont know or dont want to type the exact package name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak remove chromium&lt;br /&gt;
&lt;br /&gt;
Similar installed refs found for ‘chromium’:&lt;br /&gt;
&lt;br /&gt;
   1) app/com.github.Eloston.UngoogledChromium/x86_64/stable (system)&lt;br /&gt;
   2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable (system)&lt;br /&gt;
   3) All of the above&lt;br /&gt;
&lt;br /&gt;
Which do you want to use (0 to abort)? [0-3]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Developers ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.flatpak.org/en/latest/available-runtimes.html Flatpak - available runtimes]&lt;br /&gt;
&lt;br /&gt;
These are all hosted on [https://flathub.org/ Flathub.org].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Permission errors ===&lt;br /&gt;
&lt;br /&gt;
If you receive errors about permissions then you may need to add your user to the &#039;&#039;&#039;flatpak&#039;&#039;&#039; group.&lt;br /&gt;
&lt;br /&gt;
{{Note|You need to log out and log back in or reboot for the group change(s) to take effect}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fixing audio issues ===&lt;br /&gt;
&lt;br /&gt;
If you have a minimal setup and don&#039;t have access to audio devices you will need to set the XDG_RUNTIME_DIR variable. Save the following script in {{Path|/etc/profile.d/xdg_runtime_dir.sh}} and re-login to have it set up properly.&lt;br /&gt;
&lt;br /&gt;
 if test -z &amp;quot;${XDG_RUNTIME_DIR}&amp;quot;; then&lt;br /&gt;
   export XDG_RUNTIME_DIR=/tmp/$(id -u)&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
When you launch a Flatpak you will need to start pulseaudio as well:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ pulseaudio --start &amp;amp;&amp;amp; flatpak run com.example.Example}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://flatpak.org/ Flatpak]&lt;br /&gt;
* [https://flathub.org/ Flathub]&lt;br /&gt;
* [https://winepak.github.io/ Winepak]&lt;br /&gt;
&lt;br /&gt;
[[Category:Package Manager]]&lt;br /&gt;
[[Category: Desktop]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=UniFi_Controller&amp;diff=23770</id>
		<title>UniFi Controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=UniFi_Controller&amp;diff=23770"/>
		<updated>2023-07-04T17:48:35Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: Used warning template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|The Ubiquiti Unifi controller Linux self-contained Java image relies on MongoDB, and MongoDB has been removed from Alpine Linux after version 3.9 due to SPL license changes, so this guide doesn&#039;t work.}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This guide explains how to install the generic Unix UniFi Controller, as available from [http://www.ui.com/ Ubiquiti Networks]. At the time of writing this, a native Alpine Linux package is not available.&lt;br /&gt;
&lt;br /&gt;
Furthermore, this guide uses the incredibly reliable and efficient [http://www.skarnet.org/software/s6/ s6] supervision suite to start and control the UniFi Controller.&lt;br /&gt;
&lt;br /&gt;
A summarized schematic of what will be installed on the filesystem.&lt;br /&gt;
&lt;br /&gt;
The choice of {{path|/srv}} for the UniFi Controller&#039;s root directory is based on the fact that it contains both run-time and configuration data, so installing to {{path|/usr/local}}, {{path|/opt}} or {{path|/home}} didn&#039;t seem appropriate. Feel free to adjust the steps below, replacing {{path|/srv/unifi}} with wherever you would prefer to install the UniFi Controller software.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/&lt;br /&gt;
`--etc&lt;br /&gt;
   |-- unifi&lt;br /&gt;
   |   `-- log&lt;br /&gt;
   |-- srv&lt;br /&gt;
   |   `-- unifi&lt;br /&gt;
   |       |-- bin&lt;br /&gt;
   |       |-- conf&lt;br /&gt;
   |       |-- data&lt;br /&gt;
   |       |-- dl&lt;br /&gt;
   |       |-- lib&lt;br /&gt;
   |       |-- logs&lt;br /&gt;
   |       |-- run&lt;br /&gt;
   |       `-- webapps&lt;br /&gt;
   |-- run&lt;br /&gt;
   |   `-- openrc&lt;br /&gt;
   |          `-- s6-scan&lt;br /&gt;
   |              `-- unifi --&amp;gt; /etc/unifi&lt;br /&gt;
    `-- var&lt;br /&gt;
        `-- log&lt;br /&gt;
            `-- unifi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Prerequisite Packages =&lt;br /&gt;
&lt;br /&gt;
== OpenJDK 8 JRE ==&lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;openjdk8-jre&amp;lt;/code&amp;gt; from the community repository.&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;/etc/apk/repositories&amp;lt;/code&amp;gt; and uncomment the appropriate community repository for your Alpine version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://host.name/alpine_version/community&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the package cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apk update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apk add openjdk8-jre&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MongoDB ==&lt;br /&gt;
&lt;br /&gt;
Install MongoDB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apk add mongodb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== s6 ==&lt;br /&gt;
&lt;br /&gt;
Install [http://www.skarnet.org/software/s6/ s6]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apk add s6&amp;lt;/code&amp;gt; which is a service supervision suite, for reliably and efficiently starting, stopping and keeping services running.&lt;br /&gt;
&lt;br /&gt;
The below shows a schematic process tree of how the UniFi Controller will be started and supervised by s6. The controller is written in Java, hence the Java process and it in turn, launches a dedicated instance of MongoDB to store its configuration and run-time data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
init&lt;br /&gt;
`-- s6-svscan&lt;br /&gt;
    `-- s6-supervise&lt;br /&gt;
        |-- s6-log&lt;br /&gt;
        `-- java&lt;br /&gt;
            `-- mongod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install UniFi Controller =&lt;br /&gt;
&lt;br /&gt;
Create the &amp;lt;code&amp;gt;unifi&amp;lt;/code&amp;gt; user and group.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;adduser -D -H -h /srv/unifi unifi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the parent folder within which you wish to install the UniFi Controller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd /srv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Download the generic unix archive of the &amp;lt;code&amp;gt;VERSION&amp;lt;/code&amp;gt; you wish to install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;wget http://www.ubnt.com/downloads/unifi/VERSION/UniFi.unix.zip&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unpack the archive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;unzip UniFi.unix.zip&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rename the unpacked directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mv UniFi unifi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change ownership.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chown -R unifi:unifi unifi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lock down permissions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod o-rwx unifi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change into the UniFi bin directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd /srv/unifi/bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove the existing file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rm mongod&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a symlink to &amp;lt;code&amp;gt;/usr/bin/mongod&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ln -s /usr/bin/mongod&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure Service Management =&lt;br /&gt;
&lt;br /&gt;
== Create UniFi Service Directory and Files ==&lt;br /&gt;
&lt;br /&gt;
Create an s6 service directory for UniFi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir -p /etc/unifi/log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; script, using your favourite editor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vim /etc/unifi/run&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy and paste the following into it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/ash&lt;br /&gt;
&lt;br /&gt;
user=&#039;unifi&#039;&lt;br /&gt;
group=&#039;unifi&#039;&lt;br /&gt;
&lt;br /&gt;
exec 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
base=&#039;/srv/unifi&#039;&lt;br /&gt;
&lt;br /&gt;
if [ -d $base ]; then&lt;br /&gt;
    cd $base&lt;br /&gt;
    chown -R $user:$group .&lt;br /&gt;
    version=`head -1 webapps/ROOT/app-unifi/.version`&lt;br /&gt;
    echo &amp;quot;Starting UniFi Controller $version&amp;quot;&lt;br /&gt;
    exec s6-setuidgid $user java -jar lib/ace.jar start&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Missing $base ... aborting&amp;quot;&lt;br /&gt;
    touch down&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensure that the &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; script is executable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod 755 /etc/unifi/run&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the &amp;lt;code&amp;gt;log/run&amp;lt;/code&amp;gt; script, using your favourite editor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vim /etc/unifi/log/run&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy and paste the following into it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/ash&lt;br /&gt;
&lt;br /&gt;
log_user=&#039;log&#039;&lt;br /&gt;
&lt;br /&gt;
exec s6-setuidgid $log_user s6-log -b n20 s1000000 t /var/log/unifi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensure that the log/run script is executable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod 755 /etc/unifi/log/run&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create log User and Directory ==&lt;br /&gt;
&lt;br /&gt;
Create the &amp;lt;code&amp;gt;log&amp;lt;/code&amp;gt; user and group.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;adduser -D -H -h /var/log log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the &amp;lt;code&amp;gt;/var/log/unifi&amp;lt;/code&amp;gt; directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir -p /var/log/unifi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the directory ownership.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chown log:log /var/log/unifi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lock down the permissions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod 750 /var/log/unifi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create the OpenRC Service Script ==&lt;br /&gt;
&lt;br /&gt;
Open the script file using your favourite editor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vim /etc/init.d/unifi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following into it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/sbin/openrc-run&lt;br /&gt;
&lt;br /&gt;
name=&amp;quot;unifi&amp;quot;&lt;br /&gt;
supervisor=s6&lt;br /&gt;
s6_service_path=&amp;quot;${RC_SVCDIR}/s6-scan/${name}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
depend() {&lt;br /&gt;
	need net s6-svscan&lt;br /&gt;
	after firewall&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start_pre() {&lt;br /&gt;
        if [ ! -L &amp;quot;${RC_SVCDIR}/s6-scan/${name}&amp;quot; ]; then&lt;br /&gt;
	        ln -s &amp;quot;/etc/${name}&amp;quot; &amp;quot;${RC_SVCDIR}/s6-scan/${name}&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensure that the script is executable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod 755 /etc/init.d/unifi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start the UniFi Controller Service ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rc-service unifi start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure the UniFi Controller Service to start on boot ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rc-update add unifi boot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Simple Backup Script =&lt;br /&gt;
&lt;br /&gt;
Create &amp;lt;code&amp;gt;/usr/local/bin/unifi-backup&amp;lt;/code&amp;gt; using your favourite editor.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; This script assumes the use of s6-svc to control unifi. I will modify it in time, to use rc-service instead.&lt;br /&gt;
&lt;br /&gt;
Paste the following into the file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/ash&lt;br /&gt;
&lt;br /&gt;
conf_dir=&#039;/etc/unifi&#039;&lt;br /&gt;
backup_dir=&#039;/srv/backup/unifi&#039;&lt;br /&gt;
service_dir=&#039;/run/openrc/s6-scan/unifi&#039;&lt;br /&gt;
&lt;br /&gt;
start_state=&#039;down&#039;&lt;br /&gt;
&lt;br /&gt;
if s6-svok $service_dir; then&lt;br /&gt;
    if s6-svstat -o up,ready $service_dir | grep -q true; then&lt;br /&gt;
        echo &#039;Stopping the UniFi Controller&#039;&lt;br /&gt;
        start_state=&#039;up&#039;&lt;br /&gt;
        s6-svc -d $service_dir&lt;br /&gt;
        sleep 3&lt;br /&gt;
    fi&lt;br /&gt;
else&lt;br /&gt;
    echo &#039;Warning: The UniFi Controller is not supervised&#039;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if s6-svstat -o up $service_dir | grep -q false; then&lt;br /&gt;
    echo &#039;Success: The UniFi Controller was stopped&#039;&lt;br /&gt;
else&lt;br /&gt;
    echo &#039;Error: The UniFi Controller is still running&#039;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
stamp=`date +%Y-%m-%d_%H%M%S`&lt;br /&gt;
&lt;br /&gt;
mkdir -p $backup_dir&lt;br /&gt;
cd $backup_dir&lt;br /&gt;
mkdir &amp;quot;data-$stamp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backing up to /srv/backup/unifi/data-$stamp.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if rsync -az /srv/unifi/data/ &amp;quot;data-$stamp&amp;quot;; then&lt;br /&gt;
    echo &#039;* rsync succeeded&#039;&lt;br /&gt;
    if tar czf &amp;quot;data-$stamp.tar.gz&amp;quot; &amp;quot;data-$stamp&amp;quot;; then&lt;br /&gt;
        echo &#039;* tar succeeded&#039;&lt;br /&gt;
        rm -rf &amp;quot;data-$stamp&amp;quot;&lt;br /&gt;
        echo &#039;Backup succeeded&#039;&lt;br /&gt;
    else&lt;br /&gt;
        echo &#039;Backup failed: tar failed&#039;&lt;br /&gt;
	exit 1&lt;br /&gt;
    fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$start_state&amp;quot; == &#039;up&#039; ]; then&lt;br /&gt;
    echo &#039;Starting the UniFi Controller&#039;&lt;br /&gt;
    s6-svc -u $service_dir&lt;br /&gt;
    sleep 5&lt;br /&gt;
    s6-svstat $service_dir&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Networking]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=NZBGet&amp;diff=23768</id>
		<title>NZBGet</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=NZBGet&amp;diff=23768"/>
		<updated>2023-07-04T17:31:59Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: formatting and template use&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:NZBGet}}&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
* This guide explains how to install the popular service [https://nzbget.net/ NZBGet] on Alpine Linux. Specifically, the environment used is 3.18 running in an LXC container. This guide should still work in a standard Alpine Linux install.&lt;br /&gt;
* This guide sets up NZBGet as a standard rc init service.&lt;br /&gt;
* The path {{path|/opt}} is used in this guide, however the choice of path is immaterial to the outcome, for example, {{path|/srv}} should work fine.&lt;br /&gt;
* This guide assumes all commands are run as root unless specified.&lt;br /&gt;
&lt;br /&gt;
== Download and install nzbget ==&lt;br /&gt;
&lt;br /&gt;
Fetch and install the latest NZBGet install script. (If you have security concerns, NZBGet code is available to inspect on [https://github.com/nzbget/nzbget GitHub]).&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ wget https://nzbget.net/download/nzbget-latest-bin-linux.run}}&lt;br /&gt;
&lt;br /&gt;
Run the install script.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ chmod +x nzbget-latest-bin-linux.run &amp;amp;&amp;amp; ./nzbget-latest-bin-linux.run}}&lt;br /&gt;
&lt;br /&gt;
Move the nzbget directory to {{path|/opt}}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mv nzbget /opt/}}&lt;br /&gt;
&lt;br /&gt;
== Create NZBGet Service ==&lt;br /&gt;
&lt;br /&gt;
Create the NZBGet init file:&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/init.d/nzbget|#!/sbin/openrc-run&lt;br /&gt;
 &lt;br /&gt;
depend() {&lt;br /&gt;
	need net&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
start() {&lt;br /&gt;
	/opt/nzbget/nzbget -D&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
stop() {&lt;br /&gt;
	/opt/nzbget/nzbget -Q&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Notice that the commands &amp;lt;code&amp;gt;/opt/nzbget/nzbget -D&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/opt/nzbget/nzbget -Q&amp;lt;/code&amp;gt; are used to cleanly start and stop the service.&lt;br /&gt;
&lt;br /&gt;
Add the service to rc init:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add nzbget}}&lt;br /&gt;
&lt;br /&gt;
Start the service:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service nzb start}}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* At this point, you should be able to reach nzbget at &#039;&#039;&#039;http://&amp;lt;YOURIP&amp;gt;:6789&#039;&#039;&#039;. You should be able to start and stop the nzbget service and the service should start after a system restart/reboot:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service nzb start}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service nzb stop}}&lt;br /&gt;
&lt;br /&gt;
* Any further configs can be set using the webgui or in {{path|/opt/nzbget/nzbget.conf}}.&lt;br /&gt;
* Of note is the line in {{path|/opt/nzbget/nzbget.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DaemonUsername=root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows the service to start and run as a specific user, which is a common setup if NZBGet is used in conjunction with other media managers and shared storage. Note that any working directories specified in the settings will require their permissions updated to work correctly.&lt;br /&gt;
* NZBGet is quite descriptive in its logs. Check NZBGet&#039;s &#039;&#039;&#039;Messages&#039;&#039;&#039; section for errors, including permissions and paths.&lt;br /&gt;
&lt;br /&gt;
== Updating NZBGet ==&lt;br /&gt;
&lt;br /&gt;
As of version 21.2, the certificate that ships with NZBGet for updating from nzbget.net is expired and updates will consequently fail until it is updated. Fortunately, this can be rectified:&lt;br /&gt;
&lt;br /&gt;
Stop the nzbget service:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service nzbget stop}}&lt;br /&gt;
&lt;br /&gt;
If you run the nzbget service under any other user than root, change this back to root temporarily for the update in {{path|/opt/nzbget/nzbget.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DaemonUsername=root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fetch the new and valid certificate:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ curl --remote-name --time-cond cacert.pem https://nzbget.net/info/cacert.pem}}&lt;br /&gt;
&lt;br /&gt;
Move the new certificate to the correct path:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mv cacert.pem /opt/nzbget/cacert.pem}}&lt;br /&gt;
&lt;br /&gt;
Start the NZBGet service:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service nzbget start}}&lt;br /&gt;
&lt;br /&gt;
Navigate to your instance of NZBGet, Settings, System, Update NZBGet:&lt;br /&gt;
&lt;br /&gt;
[[File:2023-07-04 01-07.png|thumb|right|100px|nzbget update screenshot]]&lt;br /&gt;
&lt;br /&gt;
If required, stop the nzbget service again and revert the &amp;lt;code&amp;gt;DaemonUsername&amp;lt;/code&amp;gt; to its normal value in {{path|/opt/nzbget/nzbget.conf}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Networking]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Iwd&amp;diff=23752</id>
		<title>Iwd</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Iwd&amp;diff=23752"/>
		<updated>2023-07-03T09:44:42Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* Usage (iwctl) */ notes on diskless and ipv6&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:iwd}}&lt;br /&gt;
&lt;br /&gt;
iwd (&#039;&#039;&#039;i&#039;&#039;&#039;Net &#039;&#039;&#039;W&#039;&#039;&#039;ireless &#039;&#039;&#039;D&#039;&#039;&#039;aemon) is a wireless daemon for Linux. It is written by Intel and aims to replace &amp;lt;code&amp;gt;wpa_supplicant&amp;lt;/code&amp;gt;. The core goal of the project is to optimize resource utilization: storage, runtime memory and link-time costs. This is accomplished by not depending on any external libraries and utilizes features provided by the Linux Kernel to the maximum extent possible. The result is a self-contained environment that only depends on the Linux Kernel and the runtime C library.&lt;br /&gt;
&lt;br /&gt;
Potential benefits of iwd include:&lt;br /&gt;
&lt;br /&gt;
* simplification of network management&lt;br /&gt;
* faster network discovery&lt;br /&gt;
* fast and reliable roaming&lt;br /&gt;
* using less system resources&lt;br /&gt;
* using features offered by the Linux kernel&lt;br /&gt;
* support for enterprise security methods like EAP&lt;br /&gt;
* support for kernel asymmetric key rings and [https://en.wikipedia.org/wiki/Trusted_Platform_Module Trusted Platform Modules (TPM)]&lt;br /&gt;
* support for multiple clients&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;iwd&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|iwd}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage (iwctl) ==&lt;br /&gt;
&lt;br /&gt;
The iwd package provides the client program &amp;lt;code&amp;gt;iwctl&amp;lt;/code&amp;gt;, the daemon &amp;lt;code&amp;gt;iwd&amp;lt;/code&amp;gt; and the Wi-Fi monitoring tool &amp;lt;code&amp;gt;iwmon&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Begin by starting the client:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ iwctl}}&lt;br /&gt;
&lt;br /&gt;
To list all available commands:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# help&lt;br /&gt;
&lt;br /&gt;
=== Connect to a network ===&lt;br /&gt;
&lt;br /&gt;
First, if you do not know your wireless device name, list all Wi-Fi devices:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# device list&lt;br /&gt;
&lt;br /&gt;
If the device or its corresponding adapter is turned off, turn it on:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# device &#039;&#039;device&#039;&#039; set-property Powered on&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# adapter &#039;&#039;adapter&#039;&#039; set-property Powered on&lt;br /&gt;
&lt;br /&gt;
Then, to initiate a scan for networks (note that this command will not output anything):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; scan&lt;br /&gt;
&lt;br /&gt;
You can then list all available networks:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; get-networks&lt;br /&gt;
&lt;br /&gt;
Finally, to connect to a network:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; connect &#039;&#039;SSID&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If a passphrase is required, you will be prompted to enter it. Alternatively, you can supply it as a command line argument:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ iwctl –passphrase &#039;&#039;passphrase&#039;&#039; station &#039;&#039;device&#039;&#039; connect &#039;&#039;SSID&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* iwd automatically stores network passphrases in the {{Path|/var/lib/iwd}} directory and uses them to auto-connect in the future.&lt;br /&gt;
* If you run diskless Alpine, be sure to commit: {{Cmd|# lbu add /var/lib/iwd &amp;amp;&amp;amp; lbu commit -d}}&lt;br /&gt;
* To connect to a network with spaces in the SSID, the network name should be double quoted when connecting.&lt;br /&gt;
* iwd only supports PSK pass-phrases from 8 to 63 ASCII-encoded characters. }}&lt;br /&gt;
&lt;br /&gt;
==== IPV6 ====&lt;br /&gt;
&lt;br /&gt;
iwd supports IPv6, but it is disabled by default. To enable it, add the following to the configuration file:&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/iwd/main.conf|&amp;lt;nowiki&amp;gt;#[Network]&lt;br /&gt;
EnableIPv6=true&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Disconnect from a network ===&lt;br /&gt;
&lt;br /&gt;
To disconnect from a network:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; disconnect&lt;br /&gt;
&lt;br /&gt;
=== Show device and connection information ===&lt;br /&gt;
&lt;br /&gt;
To display the details of a WiFi device, like MAC address:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# device &#039;&#039;device&#039;&#039; show&lt;br /&gt;
&lt;br /&gt;
To display the connection state, including the connected network of a Wi-Fi device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; show&lt;br /&gt;
&lt;br /&gt;
=== Manage known networks ===&lt;br /&gt;
&lt;br /&gt;
To list networks you have connected to previously:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# known-networks list&lt;br /&gt;
&lt;br /&gt;
To forget a known network:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# known-networks &#039;&#039;SSID&#039;&#039; forget&lt;br /&gt;
&lt;br /&gt;
{{Note|It is not possible to assign a priority to a network, instead iwd will prioritize networks based on:&lt;br /&gt;
&lt;br /&gt;
* signal strength level&lt;br /&gt;
* security features&lt;br /&gt;
* maximum rate&lt;br /&gt;
* channel utilization&lt;br /&gt;
* time since the last connect.}}&lt;br /&gt;
&lt;br /&gt;
== Dedicated GUI (iwgtk) ==&lt;br /&gt;
&lt;br /&gt;
[[File:Iwgtk screenshot.png|thumb|right|100px|alt=iwgtk showing list of networks|iwgtk]]&lt;br /&gt;
&lt;br /&gt;
iwgtk is a wireless networking GUI for Linux with supported functionality similar to that of &amp;lt;code&amp;gt;iwctl&amp;lt;/code&amp;gt;. Features include viewing and connecting to available networks, managing known networks, provisioning new networks via WPS or Wi-Fi Easy Connect, and an indicator (tray) icon displaying connection status and signal strength.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|iwgtk}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage as a Backend ==&lt;br /&gt;
&lt;br /&gt;
iwd can be used as a replacement backend for NetworkManager. See [[NetworkManager#iwd_backend|the relevant NetworkManager section]] for more information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Wi-Fi]]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Iwd iwd on Gentoo Wiki]&lt;br /&gt;
* [https://wiki.archlinux.org/title/Iwd iwd on ArchWiki]&lt;br /&gt;
* [https://iwd.wiki.kernel.org/start iwd Wiki]&lt;br /&gt;
* [https://github.com/J-Lentz/iwgtk iwgtk: Lightweight wireless networking GUI (front-end for iwd)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Iwd&amp;diff=23750</id>
		<title>Iwd</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Iwd&amp;diff=23750"/>
		<updated>2023-07-03T09:35:48Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: added link to Wi-Fi entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:iwd}}&lt;br /&gt;
&lt;br /&gt;
iwd (&#039;&#039;&#039;i&#039;&#039;&#039;Net &#039;&#039;&#039;W&#039;&#039;&#039;ireless &#039;&#039;&#039;D&#039;&#039;&#039;aemon) is a wireless daemon for Linux. It is written by Intel and aims to replace &amp;lt;code&amp;gt;wpa_supplicant&amp;lt;/code&amp;gt;. The core goal of the project is to optimize resource utilization: storage, runtime memory and link-time costs. This is accomplished by not depending on any external libraries and utilizes features provided by the Linux Kernel to the maximum extent possible. The result is a self-contained environment that only depends on the Linux Kernel and the runtime C library.&lt;br /&gt;
&lt;br /&gt;
Potential benefits of iwd include:&lt;br /&gt;
&lt;br /&gt;
* simplification of network management&lt;br /&gt;
* faster network discovery&lt;br /&gt;
* fast and reliable roaming&lt;br /&gt;
* using less system resources&lt;br /&gt;
* using features offered by the Linux kernel&lt;br /&gt;
* support for enterprise security methods like EAP&lt;br /&gt;
* support for kernel asymmetric key rings and [https://en.wikipedia.org/wiki/Trusted_Platform_Module Trusted Platform Modules (TPM)]&lt;br /&gt;
* support for multiple clients&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;iwd&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|iwd}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage (iwctl) ==&lt;br /&gt;
&lt;br /&gt;
The iwd package provides the client program &amp;lt;code&amp;gt;iwctl&amp;lt;/code&amp;gt;, the daemon &amp;lt;code&amp;gt;iwd&amp;lt;/code&amp;gt; and the Wi-Fi monitoring tool &amp;lt;code&amp;gt;iwmon&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Begin by starting the client:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ iwctl}}&lt;br /&gt;
&lt;br /&gt;
To list all available commands:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# help&lt;br /&gt;
&lt;br /&gt;
=== Connect to a network ===&lt;br /&gt;
&lt;br /&gt;
First, if you do not know your wireless device name, list all Wi-Fi devices:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# device list&lt;br /&gt;
&lt;br /&gt;
If the device or its corresponding adapter is turned off, turn it on:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# device &#039;&#039;device&#039;&#039; set-property Powered on&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# adapter &#039;&#039;adapter&#039;&#039; set-property Powered on&lt;br /&gt;
&lt;br /&gt;
Then, to initiate a scan for networks (note that this command will not output anything):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; scan&lt;br /&gt;
&lt;br /&gt;
You can then list all available networks:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; get-networks&lt;br /&gt;
&lt;br /&gt;
Finally, to connect to a network:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; connect &#039;&#039;SSID&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If a passphrase is required, you will be prompted to enter it. Alternatively, you can supply it as a command line argument:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ iwctl –passphrase &#039;&#039;passphrase&#039;&#039; station &#039;&#039;device&#039;&#039; connect &#039;&#039;SSID&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* iwd automatically stores network passphrases in the {{Path|/var/lib/iwd}} directory and uses them to auto-connect in the future.&lt;br /&gt;
* To connect to a network with spaces in the SSID, the network name should be double quoted when connecting.&lt;br /&gt;
* iwd only supports PSK pass-phrases from 8 to 63 ASCII-encoded characters. }}&lt;br /&gt;
&lt;br /&gt;
=== Disconnect from a network ===&lt;br /&gt;
&lt;br /&gt;
To disconnect from a network:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; disconnect&lt;br /&gt;
&lt;br /&gt;
=== Show device and connection information ===&lt;br /&gt;
&lt;br /&gt;
To display the details of a WiFi device, like MAC address:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# device &#039;&#039;device&#039;&#039; show&lt;br /&gt;
&lt;br /&gt;
To display the connection state, including the connected network of a Wi-Fi device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; show&lt;br /&gt;
&lt;br /&gt;
=== Manage known networks ===&lt;br /&gt;
&lt;br /&gt;
To list networks you have connected to previously:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# known-networks list&lt;br /&gt;
&lt;br /&gt;
To forget a known network:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# known-networks &#039;&#039;SSID&#039;&#039; forget&lt;br /&gt;
&lt;br /&gt;
{{Note|It is not possible to assign a priority to a network, instead iwd will prioritize networks based on:&lt;br /&gt;
&lt;br /&gt;
* signal strength level&lt;br /&gt;
* security features&lt;br /&gt;
* maximum rate&lt;br /&gt;
* channel utilization&lt;br /&gt;
* time since the last connect.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dedicated GUI (iwgtk) ==&lt;br /&gt;
&lt;br /&gt;
[[File:Iwgtk screenshot.png|thumb|right|100px|alt=iwgtk showing list of networks|iwgtk]]&lt;br /&gt;
&lt;br /&gt;
iwgtk is a wireless networking GUI for Linux with supported functionality similar to that of &amp;lt;code&amp;gt;iwctl&amp;lt;/code&amp;gt;. Features include viewing and connecting to available networks, managing known networks, provisioning new networks via WPS or Wi-Fi Easy Connect, and an indicator (tray) icon displaying connection status and signal strength.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|iwgtk}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage as a Backend ==&lt;br /&gt;
&lt;br /&gt;
iwd can be used as a replacement backend for NetworkManager. See [[NetworkManager#iwd_backend|the relevant NetworkManager section]] for more information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Wi-Fi]]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Iwd iwd on Gentoo Wiki]&lt;br /&gt;
* [https://wiki.archlinux.org/title/Iwd iwd on ArchWiki]&lt;br /&gt;
* [https://iwd.wiki.kernel.org/start iwd Wiki]&lt;br /&gt;
* [https://github.com/J-Lentz/iwgtk iwgtk: Lightweight wireless networking GUI (front-end for iwd)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Wi-Fi&amp;diff=23749</id>
		<title>Wi-Fi</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Wi-Fi&amp;diff=23749"/>
		<updated>2023-07-03T09:35:13Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: formatting, templates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to set up a wireless network connection with WPA encryption.&lt;br /&gt;
&lt;br /&gt;
Choose a wireless daemon between {{Pkg|iwd}} and {{Pkg|wpa_supplicant}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
Working wireless drivers &lt;br /&gt;
{{Note|in most cases installing {{Pkg|linux-firmware}} should get you the required drivers. Installation of this package can produce errors on diskless or data disk modes. If such errors occur, switch to system disk mode.}}&lt;br /&gt;
&lt;br /&gt;
If you are using a &#039;&#039;&#039;Broadcom chipset&#039;&#039;&#039;, see the [[#Broadcom_Wi-Fi_Chipset_Users|Broadcom Wi-Fi section]].)&lt;br /&gt;
&lt;br /&gt;
== iwd ==&lt;br /&gt;
&lt;br /&gt;
[[Iwd]] (iNet wireless daemon) is a wireless daemon written by Intel and aiming at replacing {{Pkg|wpa_supplicant}}. The core goal of the project is to optimize resource utilization by not depending on any external libraries and instead utilizing features provided by the Linux Kernel to the maximum extent possible.&lt;br /&gt;
&lt;br /&gt;
{{Pkg|iwd}} is supported since [https://alpinelinux.org/posts/Alpine-3.10.0-released.html Alpine Linux 3.10].&lt;br /&gt;
&lt;br /&gt;
To get started, install {{Pkg|iwd}}:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add iwd}}&lt;br /&gt;
&lt;br /&gt;
To do anything with iwd, it has to be running:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service iwd start}}&lt;br /&gt;
&lt;br /&gt;
If it was not running, running &amp;lt;code&amp;gt;iwctl ..&amp;lt;/code&amp;gt; commands will print&lt;br /&gt;
&lt;br /&gt;
 The name net.connman.iwd was not provided by any .service files  &lt;br /&gt;
 Failed to retrieve IWD dbus objects, quitting...&lt;br /&gt;
&lt;br /&gt;
and running just &amp;lt;code&amp;gt;iwctl&amp;lt;/code&amp;gt; will say it is waiting for IWD to start.&lt;br /&gt;
&lt;br /&gt;
List your available wifi device(s) (you probably have &#039;&#039;wlan0&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ iwctl device list}}&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t know the SSID of your network you can run a scan and retrieve a list of all the detected networks:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ iwctl station wlan0 scan &amp;amp;&amp;amp; iwctl station wlp8s0 get-networks}}&lt;br /&gt;
&lt;br /&gt;
To connect to a network:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ iwctl station wlan0 connect &amp;lt;SSID&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|iwd automatically stores network passphrases in the /var/lib/iwd directory and uses them to auto-connect in the future. If you run diskless Alpine, make sure to include this directory to the apkovl and commit:&lt;br /&gt;
{{Cmd|# lbu add /var/lib/iwd &amp;amp;&amp;amp; lbu commit -d}}}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Since version 1.10, iwd supports IPv6, but it is disabled by default. To enable it, add the following to the configuration file:&lt;br /&gt;
{{Cat|/etc/iwd/main.conf|&amp;lt;nowiki&amp;gt;[Network]&lt;br /&gt;
EnableIPv6=true&amp;lt;/nowiki&amp;gt;}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, configure {{Pkg|iwd}} and its dependency {{Pkg|dbus}} to start automatically on boot:&lt;br /&gt;
{{Cmd|# rc-update add iwd boot &amp;amp;&amp;amp; rc-update add dbus boot}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a entry for the desired interface (e.g. {{Path|wlan0}}):&lt;br /&gt;
{{Cat|/etc/network/interfaces|auto wlan0&lt;br /&gt;
iface wlan0 inet dhcp}}&lt;br /&gt;
&lt;br /&gt;
{{Note|You could instead use the iwd&#039;s built-in network configuration by setting &amp;lt;code&amp;gt;EnableNetworkConfiguration{{=}}true&amp;lt;/code&amp;gt; in {{Path|/etc/iwd/main.conf}}&lt;br /&gt;
{{Cat|/etc/iwd/main.conf|#[General]                                                                              &lt;br /&gt;
...&lt;br /&gt;
EnableNetworkConfiguration{{=}}True &lt;br /&gt;
...}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manually restart &#039;&#039;&#039;networking&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service networking restart}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your wifi interface should now be up and have a dedicated IP adress:&lt;br /&gt;
{{Cmd|$ ip a show wlan0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful link: [https://wiki.archlinux.org/title/Iwd#Enable_built-in_network_configuration Archlinux wiki page] if you need more specific configuration.&lt;br /&gt;
&lt;br /&gt;
== wpa_supplicant  ==&lt;br /&gt;
&lt;br /&gt;
To get started install {{Pkg|wpa_supplicant}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add wpa_supplicant}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To list your available network interfaces:&lt;br /&gt;
{{Note|if you don&#039;t see any wireless interfaces (e.g. {{Path|wlan0}}), you probably need to load and/or install drivers/firmware.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|ip link}}&lt;br /&gt;
or&lt;br /&gt;
{{Cmd|ip a}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bring up the desired interface:&lt;br /&gt;
{{Cmd|# ip link set wlan0 up}}&lt;br /&gt;
&lt;br /&gt;
{{Note|If this errors with &amp;lt;code&amp;gt;ioctl 0x8914 failed: No error information&amp;lt;/code&amp;gt;, that&#039;s &amp;lt;code&amp;gt;busybox ip&amp;lt;/code&amp;gt;&#039;s way of saying your wireless radio is rfkill&#039;d. See the [[#Rfkill|Rfkill section]] for information on how to unblock your wireless radio.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use this command to add your Wi-Fi network to wpa_supplicant:&lt;br /&gt;
{{Cmd|# wpa_passphrase &#039;ExampleWifiSSID&#039; &#039;ExampleWifiPassword&#039; &amp;gt; /etc/wpa_supplicant/wpa_supplicant.conf}}&lt;br /&gt;
&#039;&#039;(Access point not broadcasting its SSID requires additional line &amp;lt;code&amp;gt;scan_ssid=1&amp;lt;/code&amp;gt; in the file &amp;lt;code&amp;gt;wpa_supplicant.conf&amp;lt;/code&amp;gt;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|the Wi-Fi SSID and password are case sensitive and the single quote before and after the SSID and password need to be there}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start wpa_supplicant in the foreground to make sure the connection succeeds.&lt;br /&gt;
{{Cmd|# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all is well, run it as a daemon in the background by setting the {{Path|-B}} option.&lt;br /&gt;
{{Cmd|# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the interface with an IP address.&lt;br /&gt;
{{Cmd|# udhcpc -i wlan0}}&lt;br /&gt;
&lt;br /&gt;
Sanity check: the interface should have a {{Path|inet}} address.&lt;br /&gt;
{{Cmd|$ ip addr show wlan0}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Automatic Configuration on System Boot  ===&lt;br /&gt;
&lt;br /&gt;
Add a entry for the desired interface (e.g. {{Path|wlan0}}):&lt;br /&gt;
{{Cat|/etc/network/interfaces|auto wlan0&lt;br /&gt;
iface wlan0 inet dhcp}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Dont remove or comment out the &#039;&#039;&#039;auto lo&#039;&#039;&#039; entry}}&lt;br /&gt;
&lt;br /&gt;
Sanity check: Make sure {{Path|/etc/wpa_supplicant/wpa_supplicant.conf}} is the correct configuration for the wireless access point you want to connect to.&lt;br /&gt;
&lt;br /&gt;
Bring the interface down.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# ip link set wlan0 down}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manually restart (or &#039;&#039;&#039;start&#039;&#039;&#039;) &#039;&#039;&#039;networking&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# /etc/init.d/networking --quiet restart &amp;amp;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all is well (feel free to confirm with the sanity checks), &lt;br /&gt;
&lt;br /&gt;
Configure wpa_supplicant to start automatically on boot:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add wpa_supplicant boot}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also make sure &#039;&#039;&#039;networking&#039;&#039;&#039; is set to automatically start on boot:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add networking boot}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Optional security precaution:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default {{Pkg|wpa_supplicant}} will store your Wi-Fi password in plain text:&lt;br /&gt;
&lt;br /&gt;
{{Cat|(Example) /etc/wpa_supplicant/wpa_supplicant.conf|&amp;lt;nowiki&amp;gt;network={&lt;br /&gt;
    ssid=&amp;quot;&amp;lt;YourSSIDShouldBeHere&amp;gt;&amp;quot;&lt;br /&gt;
        #psk=&amp;quot;&amp;lt;YourPasswordShouldBeHereInPlainText&amp;gt;&amp;quot;&lt;br /&gt;
    psk=&amp;lt;RandomLettersAndNumbersShouldBeHere&amp;gt;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
this is not necessary and {{Pkg|wpa_supplicant}} should funtion just fine without it, if you dont want your stored password in plain text just delete the line with &amp;lt;code&amp;gt;#psk=&amp;quot;&amp;lt;YourPasswordShouldBeHereInPlainText&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; on it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Launching udhcpc through wpa_cli actions ==&lt;br /&gt;
&lt;br /&gt;
{{Todo|Figure out if theses two sections are different or connected to one another}}&lt;br /&gt;
&lt;br /&gt;
With the above configuration, udhcpc will only run once at boot.&lt;br /&gt;
If the Wifi isn&#039;t available then, or the network changes in between, it needs to be notified.&lt;br /&gt;
This is done through the wpa_cli action script in /etc/wpa_supplicant/wpa_cli.sh&lt;br /&gt;
&lt;br /&gt;
== Automatic Reconnection when WIFI signal is lost  ==&lt;br /&gt;
To enable automatic reconnection when wifi signal is lost add these to config:&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/wpa_supplicant/wpa_supplicant.conf|&amp;lt;nowiki&amp;gt;ap_scan=1&lt;br /&gt;
autoscan=periodic:10&lt;br /&gt;
disable_scan_offload=1&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add wpa_cli boot}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
==== Broadcom Wi-Fi Chipset Users  ====&lt;br /&gt;
&lt;br /&gt;
The Broadcom chipset is quite popular among older computers. The b43 driver is included in the linux-lts or linux-edge kernel packages. However, you might need to compile the firmware manually for this chipset as it is not included in linux-firmware for some cargs. &lt;br /&gt;
&lt;br /&gt;
You can check if you have a Broadcom chipset by using lspci:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ lspci -nn -d 14e4:}}&lt;br /&gt;
&lt;br /&gt;
Now we need fwcutter:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add b43-fwcutter}}&lt;br /&gt;
&lt;br /&gt;
Now we have everything to download the proprietary driver and extract the firmware from it:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;# export FIRMWARE_INSTALL_DIR=&amp;quot;/lib/firmware&amp;quot;&lt;br /&gt;
$ wget http://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2&lt;br /&gt;
$ tar xjf broadcom-wl-5.100.138.tar.bz2&lt;br /&gt;
# b43-fwcutter -w &amp;quot;$FIRMWARE_INSTALL_DIR&amp;quot; broadcom-wl-5.100.138/linux/wl_apsta.o&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
More information can be found [http://linuxwireless.sipsolutions.net/en/users/Drivers/b43/#Other_distributions_not_mentioned_above here].&lt;br /&gt;
&lt;br /&gt;
Now you need to use modprobe so the device will show up:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# modprobe b43}}&lt;br /&gt;
&lt;br /&gt;
Now continue with the normal instructions. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Rfkill ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;See Also: [https://wiki.archlinux.org/title/Network_configuration/Wireless#Rfkill_caveat Network configuration/Wireless#Rfkill caveat - ArchLinux Wiki]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many laptops have a hardware button (or switch) to turn off wireless card, however, the card can also be blocked by kernel. This can be changed using rfkill. To show the current of your Wi-Fi: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; rfkill list&lt;br /&gt;
0: phy0: wlan&lt;br /&gt;
    Soft blocked: no&lt;br /&gt;
    Hard blocked: no&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the card is hard-blocked, use the hardware button or switch to unblock it. If the card is not hard-blocked but soft-blocked, use the following command: &lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rfkill unblock wifi}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation#Post-Install|Post Install]]&lt;br /&gt;
* [[Alpine setup scripts]]&lt;br /&gt;
* [[Iwd|iwd]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Bluetooth&amp;diff=23687</id>
		<title>Bluetooth</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Bluetooth&amp;diff=23687"/>
		<updated>2023-06-27T09:57:22Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* Troubleshooting */ added tip for automatic audio output switching&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft|work in progress}}&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Bluetooth Bluetooth] is a standard for the short-range wireless interconnection of cellular phones, computers, and other electronic devices. [http://www.bluez.org/ BlueZ] is an implementation of the Bluetooth protocol stack for Linux, and it is provided by the {{Pkg|bluez}} package.&lt;br /&gt;
&lt;br /&gt;
This article describes the basic installation of Bluetooth controllers and devices.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites and Basic Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|eudev}} should be installed and setup:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# setup-devd udev}}&lt;br /&gt;
&lt;br /&gt;
=== Basic Installation ===&lt;br /&gt;
&lt;br /&gt;
Basic installation is as follows:&lt;br /&gt;
&lt;br /&gt;
# Install {{Pkg|bluez}}&lt;br /&gt;
#* Optionally install {{Pkg|bluez-deprecated}} if you need deprecated tools like &amp;lt;code&amp;gt;hcitool&amp;lt;/code&amp;gt;&lt;br /&gt;
# Load the &amp;lt;code&amp;gt;btusb&amp;lt;/code&amp;gt; kernel module&lt;br /&gt;
# Add user to the &amp;lt;code&amp;gt;lp&amp;lt;/code&amp;gt; group&lt;br /&gt;
# Start and enable the Bluetooth service&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add bluez&lt;br /&gt;
&amp;amp;#35; apk add bluez-deprecated&lt;br /&gt;
&amp;amp;#35; modprobe btusb&lt;br /&gt;
&amp;amp;#35; adduser $USER lp&lt;br /&gt;
&amp;amp;#35; rc-service bluetooth start&lt;br /&gt;
&amp;amp;#35; rc-update add bluetooth default}}&lt;br /&gt;
&lt;br /&gt;
Now, check the state of the Bluetooth radio transmitter using &amp;lt;code&amp;gt;rfkill&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ rfkill list bluetooth}}&lt;br /&gt;
&lt;br /&gt;
It should return something similar to:&lt;br /&gt;
&lt;br /&gt;
 0: hci0: Bluetooth&lt;br /&gt;
         Soft blocked: no&lt;br /&gt;
         Hard blocked: no&lt;br /&gt;
&lt;br /&gt;
If the device is listed as blocked, it can be unblocked using the same tool:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rfkill unblock bluetooth}}&lt;br /&gt;
&lt;br /&gt;
{{Note|It may be necessary to restart the Bluetooth service before continuing.}}&lt;br /&gt;
&lt;br /&gt;
=== Front-ends ===&lt;br /&gt;
&lt;br /&gt;
There are several front-ends available:&lt;br /&gt;
&lt;br /&gt;
* The {{Pkg|bluez}} comes with the &amp;lt;code&amp;gt;bluetoothctl&amp;lt;/code&amp;gt; front-end&lt;br /&gt;
* {{Pkg|blueman}}: a full-featured Bluetooth manager&lt;br /&gt;
* {{Pkg|bluedevil}}: the [[KDE]] Bluetooth manager&lt;br /&gt;
* {{Pkg|gnome-bluetooth}}: the [[Gnome]] Bluetooth manager&lt;br /&gt;
&lt;br /&gt;
== Pairing ==&lt;br /&gt;
&lt;br /&gt;
=== Using &amp;lt;code&amp;gt;bluetoothctl&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Begin by starting &amp;lt;code&amp;gt;bluetoothctl&amp;lt;/code&amp;gt; and follow these basic steps:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ bluetoothctl}}&lt;br /&gt;
&lt;br /&gt;
The prompt should display:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;#&lt;br /&gt;
&lt;br /&gt;
List the available controllers:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# list&lt;br /&gt;
&lt;br /&gt;
Display information about a controller:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# show &#039;&#039;controller_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Set the default controller:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# select &#039;&#039;controller_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Power on the controller:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# power on&lt;br /&gt;
&lt;br /&gt;
Enable the agent and set it as default:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# agent on&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# default-agent&lt;br /&gt;
&lt;br /&gt;
Set the controller as discoverable (temporarily for 3 minutes) and pairable:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# discoverable on&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# pairable on&lt;br /&gt;
&lt;br /&gt;
Scan for devices:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# scan on&lt;br /&gt;
&lt;br /&gt;
Put the device into pairing mode. This generally involves pressing a button or a combinations of buttons, usually for several seconds.&lt;br /&gt;
&lt;br /&gt;
Discover the device MAC address:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# devices&lt;br /&gt;
&lt;br /&gt;
Pair with the device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# pair &#039;&#039;device_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enter the PIN if prompted:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;[agent]&amp;lt;/span&amp;gt; PIN code: ####&lt;br /&gt;
&lt;br /&gt;
Trust the device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# #trust &#039;&#039;device_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Connect to the device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# connect &#039;&#039;device_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Display information about the device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# info &#039;&#039;device_mac_address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The device is now paired:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# quit&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Set adapter power state ===&lt;br /&gt;
&lt;br /&gt;
If you would like the adapter to not be automatically enabled (e.g. on a portable device where you wish to save battery), set &amp;lt;code&amp;gt;AutoEnable=false&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;/etc/bluetooth/main.conf&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;[Policy]&amp;lt;/code&amp;gt; section:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/bluetooth/main.conf|[Policy]&lt;br /&gt;
...&lt;br /&gt;
AutoEnable&amp;amp;#61;false&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
=== Battery Reporting ===&lt;br /&gt;
&lt;br /&gt;
An experimental feature can be enabled in order to report device battery level:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/bluetooth/main.conf|[General]&lt;br /&gt;
...&lt;br /&gt;
Experimental&amp;amp;#61;true&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Due to the variety of available Bluetooth hardware it is possible that you receive errors while attempting to install, activate, or find your Bluetooth device.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;No default controller available&amp;quot; error ===&lt;br /&gt;
&lt;br /&gt;
After having followed these instructions, or others, you run &amp;lt;code&amp;gt;bluetoothctl&amp;lt;/code&amp;gt; and encounter the following scenario:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# list&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;[bluetooth]&amp;lt;/span&amp;gt;# show&lt;br /&gt;
 No default controller available&lt;br /&gt;
&lt;br /&gt;
One possible solution is that you are missing firmware drivers.&lt;br /&gt;
&lt;br /&gt;
Try running the following command to discover the source of the issue:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# dmesg &amp;amp;#124; grep -i bluetooth &amp;amp;#124; grep -i firmware}}&lt;br /&gt;
&lt;br /&gt;
There are many firmware packages available that could likely solve the this problem (see {{Pkg|linux-firmware-*}}).&lt;br /&gt;
&lt;br /&gt;
Another possible solution is to install {{Pkg|hidapi}} and add load the module:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add hidapi&lt;br /&gt;
&amp;amp;#35; modprobe uhid}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unable to control Bluetooth speaker volume / Bluetooth output is muted (Pulseaudio) ===&lt;br /&gt;
&lt;br /&gt;
It is possible to automatically switch audio output and volume control to last connected device.&lt;br /&gt;
&lt;br /&gt;
This can solve the problem of controlling the speaker volume when switching between Bluetooth devices.&lt;br /&gt;
&lt;br /&gt;
Append the following lines at the end of the {{Path|/etc/pulse/default.pa}}:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/pulse/default.pa|...&lt;br /&gt;
&amp;amp;#35;##Automatically switch audio to the most recently connected device (Bluetooth, HDMI, USB)&lt;br /&gt;
load-module module-switch-on-connect}}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Bluetooth_audio|Bluetooth Audio]] page&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Bluetooth Bluetooth entry on Gentoo Wiki]&lt;br /&gt;
* [https://wiki.archlinux.org/title/Bluetooth Bluetooth entry on ArchWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Multimedia]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Newbie]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Category:Web_Browser&amp;diff=23664</id>
		<title>Category:Web Browser</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Category:Web_Browser&amp;diff=23664"/>
		<updated>2023-06-07T17:19:22Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: Removed midori&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A web browser is an application for accessing websites. When a user requests a web page from a particular website, the browser retrieves its files from a web server and then displays the page on the user’s screen.&lt;br /&gt;
&lt;br /&gt;
Alpine Linux packages several web browsers.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Elinks&#039;&#039;&#039; {{Pkg|elinks}}: feature-rich text mode web browser&lt;br /&gt;
* &#039;&#039;&#039;Links&#039;&#039;&#039; {{Pkg|links}}/{{Pkg|links-graphics}}: web browser with both graphics and text mode&lt;br /&gt;
* &#039;&#039;&#039;Lynx&#039;&#039;&#039; {{Pkg|lynx}}: text-based browser&lt;br /&gt;
* &#039;&#039;&#039;w3m&#039;&#039;&#039; {{Pkg|w3m}}: text-based web &amp;amp;amp; gopher browser, as well as pager&lt;br /&gt;
&lt;br /&gt;
== Graphical ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Badwolf&#039;&#039;&#039; {{Pkg|badwolf}}: A minimalist and privacy-oriented WebKit browser&lt;br /&gt;
* &#039;&#039;&#039;Chromium&#039;&#039;&#039; {{Pkg|chromium}}: the open source project behind Google Chrome, Blink-based&lt;br /&gt;
* &#039;&#039;&#039;Dillo&#039;&#039;&#039; {{Pkg|dillo}}: small and fast GUI web browser&lt;br /&gt;
* &#039;&#039;&#039;Epiphany/GNOME Web&#039;&#039;&#039; {{Pkg|epiphany}}: GNOME&#039;s WebKitGTK-based browser &lt;br /&gt;
* &#039;&#039;&#039;[[Firefox]]&#039;&#039;&#039;: browser from Mozilla based on Gecko with fast rendering&lt;br /&gt;
* &#039;&#039;&#039;Netsurf&#039;&#039;&#039; {{Pkg|netsurf}}: an open source web browser&lt;br /&gt;
* &#039;&#039;&#039;Nyxt&#039;&#039;&#039; {{Pkg|nyxt}}: the &#039;&#039;“hacker’s browser”&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Qutebrowser&#039;&#039;&#039; {{Pkg|qutebrowser}}: keyboard-driven, Vim-like browser based on PyQT5&lt;br /&gt;
* &#039;&#039;&#039;Surf&#039;&#039;&#039; {{Pkg|surf}}: a simple web browser based on WebKit2/GTK+&lt;br /&gt;
* &#039;&#039;&#039;Tor&#039;&#039;&#039; {{Pkg|tor}}: a modified Mozilla Firefox ESR web browser used for accessing the Tor network — usually not recommended for general web browsing&lt;br /&gt;
* &#039;&#039;&#039;Vieb&#039;&#039;&#039; {{Pkg|vieb}}: Vim-inspired Electron browser&lt;br /&gt;
* &#039;&#039;&#039;Vimb&#039;&#039;&#039; {{Pkg|vimb}}: a Vim-like browser&lt;br /&gt;
&lt;br /&gt;
[[category: Desktop]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Template:AlpineLatest&amp;diff=23663</id>
		<title>Template:AlpineLatest</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Template:AlpineLatest&amp;diff=23663"/>
		<updated>2023-06-07T13:33:57Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: Version change to 3.18.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Template}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;3.18.0&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux_talk:FAQ&amp;diff=23655</id>
		<title>Alpine Linux talk:FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux_talk:FAQ&amp;diff=23655"/>
		<updated>2023-06-06T07:13:14Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* Package requests */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== How can I install a custom firmware in a diskless system? ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;After reboot Alpine should automatically use the directory on your local storage instead of the loopback device.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Is this correct? What is the underlying mechanism for detecting this? Should we supply a bit more detail?&lt;br /&gt;
&lt;br /&gt;
=== How do I set the local timezone? ===&lt;br /&gt;
&lt;br /&gt;
This answer targets uClibc. Should be updated to explain we no longer use that libc.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Dubiousjim|Dubiousjim]] ([[User talk:Dubiousjim|talk]]) 13:11, 17 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Is there a port of LXDE/LXQt? ==&lt;br /&gt;
&lt;br /&gt;
Is there a port of LXDE/LXQt? I&#039;d like to run it in Alpine instead of XFCE.&lt;br /&gt;
&lt;br /&gt;
== Package requests ==&lt;br /&gt;
&lt;br /&gt;
Is there an easy way to filter or search the GitLab issues for packages that have been requested and refused?&lt;br /&gt;
&lt;br /&gt;
I know that many Chromium and Firefox forks are refused for good reasons (e.g. LibreWolf, Ungoogled Chromium, and Brave).&lt;br /&gt;
&lt;br /&gt;
[[User:Bbbhltz|bbbhltz]] ([[User talk:Bbbhltz|talk]]) 07:13, 6 June 2023 (UTC)&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Setting_up_a_laptop&amp;diff=23654</id>
		<title>Talk:Setting up a laptop</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Setting_up_a_laptop&amp;diff=23654"/>
		<updated>2023-06-06T06:02:29Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* Status of page */ spaces&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please add [[UEFI Secure Boot]] to this page. --[[User:Jirutka|Jirutka]] ([[User talk:Jirutka|talk]]) 21:05, 11 September 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
ACPI is a good &#039;&#039;&#039;daemon&#039;&#039;&#039; to use to execute certain scripts when laptop events are triggered.&lt;br /&gt;
To install ACPI do: apk add acpi&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Package {{pkg|acpi}} provides an ACPI client, not a daemon. The daemon is provided either by {{pkg|busybox}} or {{pkg|acpid}}.&lt;br /&gt;
&lt;br /&gt;
== Status of page ==&lt;br /&gt;
&lt;br /&gt;
When is the completion of this page (removal of warning banner) anticipated?&lt;br /&gt;
&lt;br /&gt;
:Test out the instructions and see if they work I guess? If all goes well remove the Draft tag. [[User:Bbbhltz|bbbhltz]] ([[User talk:Bbbhltz|talk]]) 06:01, 6 June 2023 (UTC)&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Setting_up_a_laptop&amp;diff=23653</id>
		<title>Talk:Setting up a laptop</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Setting_up_a_laptop&amp;diff=23653"/>
		<updated>2023-06-06T06:01:54Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* Status of page */ reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please add [[UEFI Secure Boot]] to this page. --[[User:Jirutka|Jirutka]] ([[User talk:Jirutka|talk]]) 21:05, 11 September 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
ACPI is a good &#039;&#039;&#039;daemon&#039;&#039;&#039; to use to execute certain scripts when laptop events are triggered.&lt;br /&gt;
To install ACPI do: apk add acpi&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Package {{pkg|acpi}} provides an ACPI client, not a daemon. The daemon is provided either by {{pkg|busybox}} or {{pkg|acpid}}.&lt;br /&gt;
&lt;br /&gt;
== Status of page ==&lt;br /&gt;
&lt;br /&gt;
When is the completion of this page (removal of warning banner) anticipated?&lt;br /&gt;
&lt;br /&gt;
:Test out the instructions and see if they work I guess? If all goes well remove the Draft tag.[[User:Bbbhltz|bbbhltz]] ([[User talk:Bbbhltz|talk]]) 06:01, 6 June 2023 (UTC)&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Iwd&amp;diff=23651</id>
		<title>Iwd</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Iwd&amp;diff=23651"/>
		<updated>2023-06-05T20:55:48Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: basic information and configuration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:iwd}}&lt;br /&gt;
&lt;br /&gt;
iwd (&#039;&#039;&#039;i&#039;&#039;&#039;Net &#039;&#039;&#039;W&#039;&#039;&#039;ireless &#039;&#039;&#039;D&#039;&#039;&#039;aemon) is a wireless daemon for Linux. It is written by Intel and aims to replace &amp;lt;code&amp;gt;wpa_supplicant&amp;lt;/code&amp;gt;. The core goal of the project is to optimize resource utilization: storage, runtime memory and link-time costs. This is accomplished by not depending on any external libraries and utilizes features provided by the Linux Kernel to the maximum extent possible. The result is a self-contained environment that only depends on the Linux Kernel and the runtime C library.&lt;br /&gt;
&lt;br /&gt;
Potential benefits of iwd include:&lt;br /&gt;
&lt;br /&gt;
* simplification of network management&lt;br /&gt;
* faster network discovery&lt;br /&gt;
* fast and reliable roaming&lt;br /&gt;
* using less system resources&lt;br /&gt;
* using features offered by the Linux kernel&lt;br /&gt;
* support for enterprise security methods like EAP&lt;br /&gt;
* support for kernel asymmetric key rings and [https://en.wikipedia.org/wiki/Trusted_Platform_Module Trusted Platform Modules (TPM)]&lt;br /&gt;
* support for multiple clients&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;iwd&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|iwd}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage (iwctl) ==&lt;br /&gt;
&lt;br /&gt;
The iwd package provides the client program &amp;lt;code&amp;gt;iwctl&amp;lt;/code&amp;gt;, the daemon &amp;lt;code&amp;gt;iwd&amp;lt;/code&amp;gt; and the Wi-Fi monitoring tool &amp;lt;code&amp;gt;iwmon&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Begin by starting the client:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ iwctl}}&lt;br /&gt;
&lt;br /&gt;
To list all available commands:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# help&lt;br /&gt;
&lt;br /&gt;
=== Connect to a network ===&lt;br /&gt;
&lt;br /&gt;
First, if you do not know your wireless device name, list all Wi-Fi devices:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# device list&lt;br /&gt;
&lt;br /&gt;
If the device or its corresponding adapter is turned off, turn it on:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# device &#039;&#039;device&#039;&#039; set-property Powered on&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# adapter &#039;&#039;adapter&#039;&#039; set-property Powered on&lt;br /&gt;
&lt;br /&gt;
Then, to initiate a scan for networks (note that this command will not output anything):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; scan&lt;br /&gt;
&lt;br /&gt;
You can then list all available networks:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; get-networks&lt;br /&gt;
&lt;br /&gt;
Finally, to connect to a network:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; connect &#039;&#039;SSID&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If a passphrase is required, you will be prompted to enter it. Alternatively, you can supply it as a command line argument:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ iwctl –passphrase &#039;&#039;passphrase&#039;&#039; station &#039;&#039;device&#039;&#039; connect &#039;&#039;SSID&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* iwd automatically stores network passphrases in the {{Path|/var/lib/iwd}} directory and uses them to auto-connect in the future.&lt;br /&gt;
* To connect to a network with spaces in the SSID, the network name should be double quoted when connecting.&lt;br /&gt;
* iwd only supports PSK pass-phrases from 8 to 63 ASCII-encoded characters. }}&lt;br /&gt;
&lt;br /&gt;
=== Disconnect from a network ===&lt;br /&gt;
&lt;br /&gt;
To disconnect from a network:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; disconnect&lt;br /&gt;
&lt;br /&gt;
=== Show device and connection information ===&lt;br /&gt;
&lt;br /&gt;
To display the details of a WiFi device, like MAC address:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# device &#039;&#039;device&#039;&#039; show&lt;br /&gt;
&lt;br /&gt;
To display the connection state, including the connected network of a Wi-Fi device:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# station &#039;&#039;device&#039;&#039; show&lt;br /&gt;
&lt;br /&gt;
=== Manage known networks ===&lt;br /&gt;
&lt;br /&gt;
To list networks you have connected to previously:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# known-networks list&lt;br /&gt;
&lt;br /&gt;
To forget a known network:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;[iwd]&amp;lt;/span&amp;gt;# known-networks &#039;&#039;SSID&#039;&#039; forget&lt;br /&gt;
&lt;br /&gt;
{{Note|It is not possible to assign a priority to a network, instead iwd will prioritize networks based on:&lt;br /&gt;
&lt;br /&gt;
* signal strength level&lt;br /&gt;
* security features&lt;br /&gt;
* maximum rate&lt;br /&gt;
* channel utilization&lt;br /&gt;
* time since the last connect.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dedicated GUI (iwgtk) ==&lt;br /&gt;
&lt;br /&gt;
[[File:Iwgtk screenshot.png|thumb|right|100px|alt=iwgtk showing list of networks|iwgtk]]&lt;br /&gt;
&lt;br /&gt;
iwgtk is a wireless networking GUI for Linux with supported functionality similar to that of &amp;lt;code&amp;gt;iwctl&amp;lt;/code&amp;gt;. Features include viewing and connecting to available networks, managing known networks, provisioning new networks via WPS or Wi-Fi Easy Connect, and an indicator (tray) icon displaying connection status and signal strength.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|iwgtk}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage as a Backend ==&lt;br /&gt;
&lt;br /&gt;
iwd can be used as a replacement backend for NetworkManager. See [[NetworkManager#iwd_backend|the relevant NetworkManager section]] for more information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Iwd iwd on Gentoo Wiki]&lt;br /&gt;
* [https://wiki.archlinux.org/title/Iwd iwd on ArchWiki]&lt;br /&gt;
* [https://iwd.wiki.kernel.org/start iwd Wiki]&lt;br /&gt;
* [https://github.com/J-Lentz/iwgtk iwgtk: Lightweight wireless networking GUI (front-end for iwd)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=File:Iwgtk_screenshot.png&amp;diff=23650</id>
		<title>File:Iwgtk screenshot.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=File:Iwgtk_screenshot.png&amp;diff=23650"/>
		<updated>2023-06-05T20:43:56Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;iwgtk showing list of available networks as well as diagnostics windows&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=NetworkManager&amp;diff=23649</id>
		<title>NetworkManager</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=NetworkManager&amp;diff=23649"/>
		<updated>2023-06-05T15:21:58Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: nmcli and nmtui have been split into separate packages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://networkmanager.dev/ NetworkManager] is a program  that provides automatic detection and configuration for systems to connect to networks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|networkmanager}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are multiple interfaces available for NetworkManager:&lt;br /&gt;
&lt;br /&gt;
* TUI: {{Pkg|networkmanager-tui}}, a curses-based interface (run &amp;lt;code&amp;gt;nmtui&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Command line: {{Pkg|networkmanager-cli}} (run &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt;)&lt;br /&gt;
* GUI: {{Pkg|plasma-nm}} for Plasma integration and applet&lt;br /&gt;
* GUI: {{Pkg|network-manager-applet}} for a GTK system tray applet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will need to install an additional package if you want NetworkManager to connect to wifi:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|networkmanager-wifi}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installation start NetworkManager:&lt;br /&gt;
{{Cmd|# rc-service networkmanager start}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then set it to autostart the service on boot:&lt;br /&gt;
{{Cmd|# rc-update add networkmanager default}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also your user needs to be in the &amp;lt;code&amp;gt;plugdev&amp;lt;/code&amp;gt; group:&lt;br /&gt;
{{Cmd|# adduser &amp;lt;YourUsername&amp;gt; plugdev}}&lt;br /&gt;
&lt;br /&gt;
{{Note|you will need to log out for the new group to take effect}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wireless networks ==&lt;br /&gt;
&lt;br /&gt;
==== wpa_supplicant backend ====&lt;br /&gt;
&lt;br /&gt;
{{Todo|([[KDE|KDE Plasma]] Desktop) find out if it is possible to prevent requesting the password for &#039;&#039;&#039;KDE Wallet&#039;&#039;&#039; on login}}&lt;br /&gt;
&lt;br /&gt;
* Follow: [[Wi-Fi#wpa_supplicant]] and [[Wi-Fi#Automatic_Configuration_on_System_Boot]]&lt;br /&gt;
{{Note|{{Pkg|wpa_supplicant}} configuration might not be required, if it isnt it may be a good idea to have it setup just as a fallback}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now open &amp;lt;code&amp;gt;/etc/NetworkManager/NetworkManager.conf&amp;lt;/code&amp;gt; in a text editor and change it to something like this:&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/NetworkManager/NetworkManager.conf|&amp;lt;nowiki&amp;gt;[main] &lt;br /&gt;
dhcp=internal&lt;br /&gt;
plugins=ifupdown,keyfile&lt;br /&gt;
&lt;br /&gt;
[ifupdown]&lt;br /&gt;
managed=true&lt;br /&gt;
&lt;br /&gt;
[device]&lt;br /&gt;
wifi.scan-rand-mac-address=yes&lt;br /&gt;
wifi.backend=wpa_supplicant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|if these options dont work on your system you can change them as necessary}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you need to stop conflicting services:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service networking stop}}&lt;br /&gt;
{{Cmd|# rc-service wpa_supplicant stop}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now restart NetworkManager:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service networkmanager restart}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now connect to a network using one of the interfaces mentioned in [[NetworkManager#Installation|Installation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If that connects and stays connected with no issues enable the &amp;lt;code&amp;gt;networkmanager&amp;lt;/code&amp;gt; service and disable the &amp;lt;code&amp;gt;networking&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wpa_supplicant&amp;lt;/code&amp;gt; boot services:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add networkmanager}}&lt;br /&gt;
{{Cmd|# rc-update del networking boot}}&lt;br /&gt;
{{Cmd|# rc-update del wpa_supplicant boot}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== iwd backend ====&lt;br /&gt;
&lt;br /&gt;
NetworkManager supports wireless networks through {{Pkg|iwd}}, however, consider [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues?scope=all&amp;amp;utf8=%E2%9C%93&amp;amp;state=opened&amp;amp;search=iwd existing issues] before using it. After installation, enable the server and restart NetworkManager:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rc-service iwd start&lt;br /&gt;
rc-service networkmanager restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To use {{Pkg|iwd}} though, you&#039;ve have to edit NetworkManager&#039;s configuration because it still defaults to {{Pkg|wpa_supplicant}} instead. Add the following to {{Path|/etc/NetworkManager/NetworkManager.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[device]&lt;br /&gt;
wifi.backend=iwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VPN support ==&lt;br /&gt;
Since version 1.16, NetworkManager has support for Wireguard[https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/NEWS?id=1.16.0].&lt;br /&gt;
&lt;br /&gt;
Support for other VPN types is provided by plugins. They are provided in the following packages:&lt;br /&gt;
* {{Pkg|networkmanager-openvpn}} for OpenVPN&lt;br /&gt;
&lt;br /&gt;
== nm-applet ==&lt;br /&gt;
=== not authorized to control networking ===&lt;br /&gt;
&lt;br /&gt;
You can enable all users to edit connections without adding polkit.&lt;br /&gt;
First, make the &amp;lt;code&amp;gt;conf.d&amp;lt;/code&amp;gt; directory for networkmanager:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mkdir -p /etc/NetworkManager/conf.d}}&lt;br /&gt;
&lt;br /&gt;
Then, add following content to &amp;lt;code&amp;gt;/etc/NetworkManager/conf.d/any-user.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
auth-polkit=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, restart networkmanager:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# /etc/init.d/networkmanager restart}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Inotifyd&amp;diff=23642</id>
		<title>Inotifyd</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Inotifyd&amp;diff=23642"/>
		<updated>2023-06-01T19:52:45Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* Create an OpenRC service script */ remove extra spaces&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use case ==&lt;br /&gt;
&lt;br /&gt;
Sometimes we need to monitor a directory (or file) and do some post processing/actions. Instead of polling the directory for changes we can use inotify to watch a specific folder or file and be notified if something happens within its context. While there are tools in aports designed around inotify (inotify-tools) alpine has a build in tool called inotifyd (part of busybox) to execute a command on file system events. Below is an example of how you can setup a watch folder with just base alpine (busybox and openrc).&lt;br /&gt;
&lt;br /&gt;
== Create an OpenRC service script ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/init.d/inotifyd|&amp;lt;nowiki&amp;gt;#!/sbin/openrc-run&lt;br /&gt;
&lt;br /&gt;
command=/sbin/inotifyd&lt;br /&gt;
command_args=&amp;quot;$INOTIFYD_ARGS&amp;quot;&lt;br /&gt;
command_user=&amp;quot;$INOTIFYD_USER&amp;quot;&lt;br /&gt;
pidfile=/run/${RC_SVCNAME}.pid&lt;br /&gt;
command_background=yes&lt;br /&gt;
start_stop_daemon_args=&amp;quot;--stdout /var/log/$RC_SVCNAME/${RC_SVCNAME}.log --stderr /var/log/$RC_SVCNAME/${RC_SVCNAME}.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
start_pre() {&lt;br /&gt;
        checkpath --directory --owner $INOTIFYD_USER --mode 0775 \&lt;br /&gt;
                /var/log/$RC_SVCNAME&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/conf.d/inotifyd|&amp;lt;nowiki&amp;gt;INOTIFYD_ARGS=&amp;quot;/usr/local/bin/myscript /home/username/watchdir:w&amp;quot;&lt;br /&gt;
INOTIFYD_USER=username&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/usr/local/bin/myscript|&amp;lt;nowiki&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
event=&amp;quot;$1&amp;quot;&lt;br /&gt;
directory=&amp;quot;$2&amp;quot;&lt;br /&gt;
file=&amp;quot;$3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# run some command based on an event&lt;br /&gt;
case &amp;quot;$event&amp;quot; in&lt;br /&gt;
  w) echo &amp;quot;writable $file is closed in $directory&amp;quot;;;&lt;br /&gt;
  *) echo &amp;quot;This will never happen as we only listen for w.&amp;quot;;;&lt;br /&gt;
esac&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Finishing up ==&lt;br /&gt;
&lt;br /&gt;
Starting inotifyd:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service inotifyd start}}&lt;br /&gt;
&lt;br /&gt;
Now copy some file into the watch folder and check the service log in {{Path|/var/log/inotifyd}}.&lt;br /&gt;
&lt;br /&gt;
In the example above we only listen for file closed events (w). In case you want to listen to more events you can just add them after each other. In case you want to listen to all of them you simply remove all appending event letters from the directory.&lt;br /&gt;
&lt;br /&gt;
== Possible inotify Events ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Events:&lt;br /&gt;
        a       File is accessed&lt;br /&gt;
        c       File is modified&lt;br /&gt;
        e       Metadata changed&lt;br /&gt;
        w       Writable file is closed&lt;br /&gt;
        0       Unwritable file is closed&lt;br /&gt;
        r       File is opened&lt;br /&gt;
        D       File is deleted&lt;br /&gt;
        M       File is moved&lt;br /&gt;
        u       Backing fs is unmounted&lt;br /&gt;
        o       Event queue overflowed&lt;br /&gt;
        x       File can&#039;t be watched anymore&lt;br /&gt;
If watching a directory:&lt;br /&gt;
        y       Subfile is moved into dir&lt;br /&gt;
        m       Subfile is moved out of dir&lt;br /&gt;
        n       Subfile is created&lt;br /&gt;
        d       Subfile is deleted&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Monitoring]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Inotifyd&amp;diff=23641</id>
		<title>Inotifyd</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Inotifyd&amp;diff=23641"/>
		<updated>2023-06-01T19:52:14Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: style changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Use case ==&lt;br /&gt;
&lt;br /&gt;
Sometimes we need to monitor a directory (or file) and do some post processing/actions. Instead of polling the directory for changes we can use inotify to watch a specific folder or file and be notified if something happens within its context. While there are tools in aports designed around inotify (inotify-tools) alpine has a build in tool called inotifyd (part of busybox) to execute a command on file system events. Below is an example of how you can setup a watch folder with just base alpine (busybox and openrc).&lt;br /&gt;
&lt;br /&gt;
== Create an OpenRC service script ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/init.d/inotifyd|&amp;lt;nowiki&amp;gt;#!/sbin/openrc-run&lt;br /&gt;
&lt;br /&gt;
command=/sbin/inotifyd&lt;br /&gt;
command_args=&amp;quot;$INOTIFYD_ARGS&amp;quot;&lt;br /&gt;
command_user=&amp;quot;$INOTIFYD_USER&amp;quot;&lt;br /&gt;
pidfile=/run/${RC_SVCNAME}.pid&lt;br /&gt;
command_background=yes&lt;br /&gt;
start_stop_daemon_args=&amp;quot;--stdout /var/log/$RC_SVCNAME/${RC_SVCNAME}.log --stderr /var/log/$RC_SVCNAME/${RC_SVCNAME}.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
start_pre() {&lt;br /&gt;
        checkpath --directory --owner $INOTIFYD_USER --mode 0775 \&lt;br /&gt;
                /var/log/$RC_SVCNAME&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/conf.d/inotifyd|&amp;lt;nowiki&amp;gt;INOTIFYD_ARGS=&amp;quot;/usr/local/bin/myscript /home/username/watchdir:w&amp;quot;&lt;br /&gt;
INOTIFYD_USER=username&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/usr/local/bin/myscript|&amp;lt;nowiki&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
event=&amp;quot;$1&amp;quot;&lt;br /&gt;
directory=&amp;quot;$2&amp;quot;&lt;br /&gt;
file=&amp;quot;$3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# run some command based on an event&lt;br /&gt;
case &amp;quot;$event&amp;quot; in&lt;br /&gt;
  w) echo &amp;quot;writable $file is closed in $directory&amp;quot;;;&lt;br /&gt;
  *) echo &amp;quot;This will never happen as we only listen for w.&amp;quot;;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Finishing up ==&lt;br /&gt;
&lt;br /&gt;
Starting inotifyd:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service inotifyd start}}&lt;br /&gt;
&lt;br /&gt;
Now copy some file into the watch folder and check the service log in {{Path|/var/log/inotifyd}}.&lt;br /&gt;
&lt;br /&gt;
In the example above we only listen for file closed events (w). In case you want to listen to more events you can just add them after each other. In case you want to listen to all of them you simply remove all appending event letters from the directory.&lt;br /&gt;
&lt;br /&gt;
== Possible inotify Events ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Events:&lt;br /&gt;
        a       File is accessed&lt;br /&gt;
        c       File is modified&lt;br /&gt;
        e       Metadata changed&lt;br /&gt;
        w       Writable file is closed&lt;br /&gt;
        0       Unwritable file is closed&lt;br /&gt;
        r       File is opened&lt;br /&gt;
        D       File is deleted&lt;br /&gt;
        M       File is moved&lt;br /&gt;
        u       Backing fs is unmounted&lt;br /&gt;
        o       Event queue overflowed&lt;br /&gt;
        x       File can&#039;t be watched anymore&lt;br /&gt;
If watching a directory:&lt;br /&gt;
        y       Subfile is moved into dir&lt;br /&gt;
        m       Subfile is moved out of dir&lt;br /&gt;
        n       Subfile is created&lt;br /&gt;
        d       Subfile is deleted&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Monitoring]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Raspberry_Pi_3_-_Setting_Up_Bluetooth&amp;diff=23640</id>
		<title>Raspberry Pi 3 - Setting Up Bluetooth</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Raspberry_Pi_3_-_Setting_Up_Bluetooth&amp;diff=23640"/>
		<updated>2023-06-01T19:47:31Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: proposal to merge, style tweaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Merge|Raspberry Pi|or create subpages}}&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi Bluetooth chip varies by model.&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 3 has BCM2837 connected to the hardware UART&lt;br /&gt;
* Raspberry Pi 3B+ has BCM4345C0 connected to the hardware UART&lt;br /&gt;
* Raspberry Pi Zero W has BCM43430A1 connected to the hardware UART&lt;br /&gt;
&lt;br /&gt;
You can get Bluetooth to work only if you are not using the UART (ttyAMA0) for anything else, for example serial console.&lt;br /&gt;
Recent versions of Alpine Linux for Raspberry Pi come with the required Broadcom firmware files.&lt;br /&gt;
If you need the UART for something else, you can use an USB Bluetooth adapter instead.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need the bluez package&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add bluez}}&lt;br /&gt;
&lt;br /&gt;
The Bluetooth controller is not automatically discovered on the UART. Test attaching it and check that the controller is found:&lt;br /&gt;
&lt;br /&gt;
{{cmd|$ btattach -B /dev/ttyAMA0 -P bcm -S 115200 -N &amp;amp;}}&lt;br /&gt;
&lt;br /&gt;
{{cmd|# rc-service bluetooth start}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; bluetoothctl list&lt;br /&gt;
&lt;br /&gt;
Controller B8:27:EB:01:02:03 BlueZ 5.50 [default]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the interface is discovered after the attach, you can make attaching persistent by uncommenting&lt;br /&gt;
the line next to &amp;lt;code&amp;gt;rpi bluetooth&amp;lt;/code&amp;gt; in {{Path|/etc/mdev.conf}}.&lt;br /&gt;
&lt;br /&gt;
Start the Bluetooth daemon at boot:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# rc-update add bluetooth}}&lt;br /&gt;
&lt;br /&gt;
{{cmd|# lbu commit &amp;amp;&amp;amp; reboot}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The output from the &amp;lt;code&amp;gt;btattach&amp;lt;/code&amp;gt; above should be&lt;br /&gt;
&lt;br /&gt;
 Attaching Primary controller to /dev/ttyAMA0&lt;br /&gt;
 Switched line discipline from 0 to 15&lt;br /&gt;
 Device index 0 attached&lt;br /&gt;
&lt;br /&gt;
Then it&#039;s a matter of doing what you normally do with your Bluetooth stack.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Bluetooth]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[category: Raspberry]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Elogind&amp;diff=23639</id>
		<title>Elogind</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Elogind&amp;diff=23639"/>
		<updated>2023-06-01T19:41:09Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: added to Desktop category, minor style changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://github.com/elogind/elogind &#039;&#039;&#039;elogind&#039;&#039;&#039;] is a login manager and provides support for &lt;br /&gt;
&lt;br /&gt;
* setting up necessary permissions for the desktop environment or window manager&lt;br /&gt;
* handling poweroff, reboot, suspend and hibernate via &#039;&#039;&#039;loginctl&#039;&#039;&#039; command&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|elogind}} {{Pkg|polkit-elogind}}&lt;br /&gt;
# rc-update add elogind&lt;br /&gt;
# rc-service elogind start}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== logind.conf ===&lt;br /&gt;
&lt;br /&gt;
Edit {{Path|/etc/elogind/logind.conf}} to configure handling of power events, such as suspending the computer when power button is pressed:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;# sed -i &#039;s|#HandlePowerKey=poweroff|HandlePowerKey=suspend|&#039; /etc/elogind/logind.conf&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Working with Desktop Environments ===&lt;br /&gt;
&lt;br /&gt;
If using a Window Manager or Desktop Environment, such as [[Sway]], the user must ensure that login session is correctly configured.  When correctly configured, the &amp;lt;code&amp;gt;loginctl&amp;lt;/code&amp;gt; command should output the following:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using [[Sway]] and [[SDDM]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; loginctl&lt;br /&gt;
&lt;br /&gt;
SESSION  UID USER SEAT  TTY &lt;br /&gt;
     c1  105 sddm seat0     &lt;br /&gt;
     c2 1000 User seat0 tty8&lt;br /&gt;
&lt;br /&gt;
2 sessions listed.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output is &amp;lt;code&amp;gt;No session available.&amp;lt;/code&amp;gt;, such as in the case of launching Sway from tty, suspend and many other functionality will not work.  The user then must configure a display manager such as {{Pkg|greetd}}, [[SDDM]] or {{Pkg|lightdm|LightDM}}.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Elogind elogind - Gentoo Wiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Sending_SMS_using_gnokii&amp;diff=23638</id>
		<title>Sending SMS using gnokii</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Sending_SMS_using_gnokii&amp;diff=23638"/>
		<updated>2023-06-01T14:53:21Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: marked for deletion: gnokii is no longer in the repositories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{Delete|gnokii is no longer in the repositories}}&lt;br /&gt;
&lt;br /&gt;
In this tutorial we are using {{pkg|gnokii}} to send SMS&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
This doc is documented and tested based on Alpine Linux 2.7, but it might work for earlier versions too.&amp;lt;BR&amp;gt;&lt;br /&gt;
You will also need some sort of modem that can send SMS (e.g. a USB dongle with a SIM-card).&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
* Install required package(s)&lt;br /&gt;
 {{Cmd|apk add gnokii}}&lt;br /&gt;
* Create missing folders&lt;br /&gt;
 {{Cmd|mkdir -p /root/.cache/gnokii/}}&lt;br /&gt;
* Physically attach a SMS capable modem to the host&lt;br /&gt;
&lt;br /&gt;
== Configure ==&lt;br /&gt;
* Add the following content to &#039;&amp;lt;tt&amp;gt;/etc/gnokiirc&amp;lt;/tt&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
[global]&lt;br /&gt;
port = /dev/ttyUSB0&lt;br /&gt;
model = AT&lt;br /&gt;
connection = serial&lt;br /&gt;
use_locking = yes&lt;br /&gt;
serial_baudrate = 115200&lt;br /&gt;
smsc_timeout = 30&lt;br /&gt;
&lt;br /&gt;
[gnokiid]&lt;br /&gt;
binddir = /usr/bin/&lt;br /&gt;
&lt;br /&gt;
[logging]&lt;br /&gt;
debug = off&lt;br /&gt;
rlpdebug = off&lt;br /&gt;
xdebug = off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 {{Note|You will most likely need to change the above config so it to suit your equipment and setup.}}&lt;br /&gt;
* Verify if the configuration works as expected&lt;br /&gt;
 {{cmd|gnokii --identify}}&lt;br /&gt;
 {{note|You should receive a output that looks something like this:&amp;lt;pre&amp;gt;&lt;br /&gt;
GNOKII Version 0.6.31&lt;br /&gt;
Cannot open logfile /root/.cache/gnokii/gnokii-errors&lt;br /&gt;
WARNING: cannot open logfile, logs will be directed to stderr&lt;br /&gt;
IMEI         : 123456789012345&lt;br /&gt;
Manufacturer : Undefined&lt;br /&gt;
No flags section in the config file.&lt;br /&gt;
Model        : Teltonika TM1&lt;br /&gt;
Product name : Teltonika TM1&lt;br /&gt;
Revision     : VilniusSMD 05.94.01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Sending SMS ==&lt;br /&gt;
* Now send a SMS&lt;br /&gt;
 {{cmd|echo &amp;quot;Test sms&amp;quot; {{!}} gnokii --sendsms 123456}}&lt;br /&gt;
 {{note|You will need to replace 123456 with the phone number you want to send your test SMS}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Sircbot&amp;diff=23637</id>
		<title>Sircbot</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Sircbot&amp;diff=23637"/>
		<updated>2023-06-01T11:44:11Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: style and formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sircbot is a Minimalistic IRC bot based in Lua script.&lt;br /&gt;
&lt;br /&gt;
== Install sircbot ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|sircbot}} {{Pkg|lua-sircbot}}}}&lt;br /&gt;
&lt;br /&gt;
== Configure sircbot ==&lt;br /&gt;
&lt;br /&gt;
Edit the configuration file located at {{Path|/etc/conf.d/sircbot}} and change the name, server, and channel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/conf.d/sircbot|...&lt;br /&gt;
sircbot_opts{{=}}&amp;quot;-n name -s server&amp;quot;&lt;br /&gt;
sircbot_channels{{=}}&amp;quot;#channel&amp;quot;&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
== Create sircbot scripts folders and files ==&lt;br /&gt;
&lt;br /&gt;
Sircbot will use an folder for the channel where is logged in. Lets say we will use it at the &amp;quot;test&amp;quot; channel.&lt;br /&gt;
The folder path is: {{Path|/etc/sircbot.d/#channel}}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Lets see an example:&lt;br /&gt;
&lt;br /&gt;
Our bot will be named &#039;&#039;kumquat&#039;&#039; and we will join at the #test channel in the irc.ddd.ddd server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/conf.d/sircbot|sircbot_opts{{=}}&amp;quot;-n kumquat -s irc.ddd.ddd&amp;quot;&lt;br /&gt;
sircbot_channels{{=}}&amp;quot;#test&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
Create folder bot. &lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mkdir /etc/sircbot.d/#test -p}}&lt;br /&gt;
&lt;br /&gt;
Create the Lua script file for our bot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/sircbot.d/#test/commands|&amp;lt;nowiki&amp;gt;#!/usr/bin/lua&lt;br /&gt;
&lt;br /&gt;
-- Scripts for kumquat in Lua&lt;br /&gt;
&lt;br /&gt;
args={...}&lt;br /&gt;
&lt;br /&gt;
sender=args[1]   	-- is the nickname of running the command on IRC&lt;br /&gt;
message=args[2] 	-- is the message or command typed&lt;br /&gt;
channel=args[3] 	-- is the channel name&lt;br /&gt;
&lt;br /&gt;
os.execute(&amp;quot;sleep &amp;quot; .. tonumber(1))&lt;br /&gt;
&lt;br /&gt;
-- This command will show: What can i do for you &amp;quot;nickname&amp;quot;?&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;kumquat&amp;quot;) &lt;br /&gt;
  if kumquatresult ~= nil then&lt;br /&gt;
  command=&amp;quot;echo &#039;What can i do for you &#039;&amp;quot;..sender..&amp;quot;&#039;?&#039; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;&lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This command will show: Hello there, amigo &amp;quot;nickname&amp;quot;&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;hi&amp;quot;)&lt;br /&gt;
  if kumquatresult ~= nil then&lt;br /&gt;
  command=&amp;quot;echo &#039;Hello there, amigo &#039;&amp;quot;..sender..&amp;quot;&#039;&#039; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;&lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This command will show the current UTC date and time&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;date&amp;quot;)&lt;br /&gt;
  if kumquatresult ~= nil then&lt;br /&gt;
  command=&amp;quot;date -u | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;&lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This command will do a search for a alpine linux package&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;apk search:[^%d]&amp;quot;)&lt;br /&gt;
if kumquatresult ~= nil then&lt;br /&gt;
  local strng = (string.sub(message, 12))&lt;br /&gt;
  command=&amp;quot;apk search&amp;quot;..strng..&amp;quot; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;    &lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
-- This command will resolve a host name and ip&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;host:[^%d]&amp;quot;)&lt;br /&gt;
if kumquatresult ~= nil then&lt;br /&gt;
  local strng = (string.sub(message, 6))&lt;br /&gt;
  command=&amp;quot;host &amp;quot;..strng..&amp;quot; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;    &lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This command will do a 3 times ping to a server or ip address&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;ping:[^%d]&amp;quot;)&lt;br /&gt;
if kumquatresult ~= nil then&lt;br /&gt;
  local strng = (string.sub(message, 6))&lt;br /&gt;
  command=&amp;quot;ping -c 3 &amp;quot;..strng..&amp;quot; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;    &lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Make the script to be executable&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# chmod +x /etc/sircbot.d/#test/commands}}&lt;br /&gt;
&lt;br /&gt;
== Giving life to the bot ==&lt;br /&gt;
&lt;br /&gt;
Starting bot service and adding to boot.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service sircbot start &amp;amp;&amp;amp; rc-update add sircbot default}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If your bot is not responding as expected, an easy way to troubleshoot is to manually execute the script in /etc/sircbot.d/&amp;lt;#channelname&amp;gt;/&amp;lt;scriptname&amp;gt; with the three agruments.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ /etc/sircbot.d/&amp;lt;#channelname&amp;gt;/&amp;lt;scriptname&amp;gt; username hi &#039;&amp;lt;#channelname&amp;gt;&#039;}}&lt;br /&gt;
&lt;br /&gt;
If your bot responds as expected, then you know that your script works.  The problem is that sircbot is not executing the script.  Here are two likely causes:&lt;br /&gt;
&lt;br /&gt;
# Sircbot is case-sensitive when looking for the channel directory for a script to execute.  For example, if you have a channel named &amp;quot;#Alpine&amp;quot;, sircbot will look for /etc/sircbot.d/#Alpine/*.  If that pathway isn&#039;t exactly right, then sircbot will skip that folder.  In our example, if you have /etc/sircbot.d/#alpine/script, sircbot will not execute anything in that folder.  To fix, simply rename the folder to /etc/sircbot.d/#Alpine/&lt;br /&gt;
# Sircbot doesn&#039;t execute scripts that have a &#039;.&#039; in the name.  For example a script named &#039;listen.lua&#039; will not be executed.  Simply rename the script to &#039;listen&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Flatpak&amp;diff=23636</id>
		<title>Flatpak</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Flatpak&amp;diff=23636"/>
		<updated>2023-06-01T09:25:50Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: style tweaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft|More documentation and testing is needed, but everything currently here should be safe to follow.}}&lt;br /&gt;
&lt;br /&gt;
Flatpak is a technology for building and distributing applications with the goal of having a universal package format for all Linux distributons, it is similar to [https://en.wikipedia.org/wiki/Snap_(software) Snap], &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup / Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;From: https://flatpak.org/setup/Alpine/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|To install Flatpak you will need to enable the  Community repository, See: [[Repositories#Managing_repositories|Repositories - Managing repositories]]}}&lt;br /&gt;
&lt;br /&gt;
To install Flatpak run:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add {{Pkg|flatpak}}}}&lt;br /&gt;
&lt;br /&gt;
Next you need to add a repository, for this guide we will use the recommended repository, [https://flathub.org Flathub].&lt;br /&gt;
&lt;br /&gt;
{{cmd|$ flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo}}&lt;br /&gt;
&lt;br /&gt;
Now reboot to complete setup&lt;br /&gt;
&lt;br /&gt;
{{Note|graphical installation of Flatpak apps may not be possible with Alpine.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
To get all of the available options to use with the &#039;&#039;&#039;flatpak&#039;&#039;&#039; command run: &#039;&#039;&#039;flatpak --help&#039;&#039;&#039; or &#039;&#039;&#039;flatpak -h&#039;&#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
To search for applications run &#039;&#039;&#039;flatpak search &amp;lt;appplicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak search chromium&lt;br /&gt;
&lt;br /&gt;
Name                   Description                                                        Application ID                        Version       Branch  Remotes&lt;br /&gt;
Chromium Web Browser   The web browser from Chromium project                              org.chromium.Chromium                 96.0.4664.93  stable  flathub&lt;br /&gt;
Chromium B.S.U.        Fast paced, arcade-style, top-scrolling space shooter              net.sourceforge.chromium-bsu          0.9.16.1      stable  flathub&lt;br /&gt;
ungoogled-chromium     A lightweight approach to removing Google web service dependency   com.github.Eloston.UngoogledChromium  96.0.4664.45  stable  flathub&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install ===&lt;br /&gt;
&lt;br /&gt;
To install a package run &#039;&#039;&#039;flatpak install &amp;lt;applicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak install com.github.Eloston.UngoogledChromium&lt;br /&gt;
&lt;br /&gt;
Looking for matches…&lt;br /&gt;
&lt;br /&gt;
com.github.Eloston.UngoogledChromium permissions:&lt;br /&gt;
    ipc             network                 cups                   pulseaudio               wayland                       x11&lt;br /&gt;
    devices         file access [1]         dbus access [2]        bus ownership [3]        system dbus access [4]&lt;br /&gt;
&lt;br /&gt;
    [1] /run/.heim_org.h5l.kcm-socket, home, xdg-run/pipewire-0&lt;br /&gt;
    [2] org.freedesktop.FileManager1, org.freedesktop.Notifications, org.freedesktop.secrets, org.gnome.SessionManager&lt;br /&gt;
    [3] org.mpris.MediaPlayer2.chromium.*&lt;br /&gt;
    [4] org.freedesktop.Avahi, org.freedesktop.UPower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        ID                                                      Branch             Op            Remote             Download&lt;br /&gt;
 1.     com.github.Eloston.UngoogledChromium.Codecs             stable             i             flathub              &amp;lt; 1.1 MB&lt;br /&gt;
 2.     com.github.Eloston.UngoogledChromium.Locale             stable             i             flathub            &amp;lt; 112.8 kB&lt;br /&gt;
 3.     com.github.Eloston.UngoogledChromium                    stable             i             flathub            &amp;lt; 119.0 MB&lt;br /&gt;
&lt;br /&gt;
Proceed with these changes to the system installation? [Y/n]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or if you dont know or dont want to type the exact package name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak install chromium&lt;br /&gt;
&lt;br /&gt;
Looking for matches…&lt;br /&gt;
Similar refs found for ‘chromium’ in remote ‘flathub’ (system):&lt;br /&gt;
&lt;br /&gt;
   1) app/net.sourceforge.chromium-bsu/x86_64/stable&lt;br /&gt;
   2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable&lt;br /&gt;
   3) runtime/org.chromium.Chromium.Codecs/x86_64/stable&lt;br /&gt;
   4) app/org.chromium.Chromium/x86_64/stable&lt;br /&gt;
   5) app/com.github.Eloston.UngoogledChromium/x86_64/stable&lt;br /&gt;
&lt;br /&gt;
Which do you want to use (0 to abort)? [0-5]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Remove ===&lt;br /&gt;
&lt;br /&gt;
To remove a package run: &#039;&#039;&#039;flatpak remove &amp;lt;applicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak remove com.github.Eloston.UngoogledChromium&lt;br /&gt;
&lt;br /&gt;
        ID                                                     Branch           Op&lt;br /&gt;
 1.     com.github.Eloston.UngoogledChromium                   stable           r&lt;br /&gt;
 2.     com.github.Eloston.UngoogledChromium.Codecs            stable           r&lt;br /&gt;
 3.     com.github.Eloston.UngoogledChromium.Locale            stable           r&lt;br /&gt;
&lt;br /&gt;
Proceed with these changes to the system installation? [Y/n]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
or if you dont know or dont want to type the exact package name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak remove chromium&lt;br /&gt;
&lt;br /&gt;
Similar installed refs found for ‘chromium’:&lt;br /&gt;
&lt;br /&gt;
   1) app/com.github.Eloston.UngoogledChromium/x86_64/stable (system)&lt;br /&gt;
   2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable (system)&lt;br /&gt;
   3) All of the above&lt;br /&gt;
&lt;br /&gt;
Which do you want to use (0 to abort)? [0-3]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Developers ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.flatpak.org/en/latest/available-runtimes.html Flatpak - available runtimes]&lt;br /&gt;
&lt;br /&gt;
These are all hosted on [https://flathub.org/ Flathub.org].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Permission errors ===&lt;br /&gt;
&lt;br /&gt;
If you receive errors about permissions then you may need to add your user to the &#039;&#039;&#039;flatpak&#039;&#039;&#039; group.&lt;br /&gt;
&lt;br /&gt;
{{Note|You need to log out and log back in or reboot for the group change(s) to take effect}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fixing audio issues ===&lt;br /&gt;
&lt;br /&gt;
If you have a minimal setup and don&#039;t have access to audio devices you will need to set the XDG_RUNTIME_DIR variable. Save the following script in {{Path|/etc/profile.d/xdg_runtime_dir.sh}} and re-login to have it set up properly.&lt;br /&gt;
&lt;br /&gt;
 if test -z &amp;quot;${XDG_RUNTIME_DIR}&amp;quot;; then&lt;br /&gt;
   export XDG_RUNTIME_DIR=/tmp/$(id -u)&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
When you launch a Flatpak you will need to start pulseaudio as well:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ pulseaudio --start &amp;amp;&amp;amp; flatpak run com.example.Example}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://flatpak.org/ Flatpak]&lt;br /&gt;
* [https://flathub.org/ Flathub]&lt;br /&gt;
* [https://winepak.github.io/ Winepak]&lt;br /&gt;
&lt;br /&gt;
[[Category:Package Manager]]&lt;br /&gt;
[[Category: Desktop]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Flatpak&amp;diff=23635</id>
		<title>Flatpak</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Flatpak&amp;diff=23635"/>
		<updated>2023-06-01T09:16:47Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* Search */ style tweak&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft|More documentation and testing is needed, but everything currently here should be safe to follow.}}&lt;br /&gt;
&lt;br /&gt;
Flatpak is a technology for building and distributing applications with the goal of having a universal package format for all Linux distributons, it is similar to [https://en.wikipedia.org/wiki/Snap_(software) Snap], &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup / Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;From: https://flatpak.org/setup/Alpine/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|To install Flatpak you will need to enable the  Community repository, See: [[Repositories#Managing_repositories|Repositories - Managing repositories]]}}&lt;br /&gt;
&lt;br /&gt;
To install Flatpak run:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add {{Pkg|flatpak}}}}&lt;br /&gt;
&lt;br /&gt;
Next you need to add a repository, for this guide we will use the recommended repository, [https://flathub.org Flathub].&lt;br /&gt;
&lt;br /&gt;
{{cmd|$ flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo}}&lt;br /&gt;
&lt;br /&gt;
Now reboot to complete setup&lt;br /&gt;
&lt;br /&gt;
{{Note|graphical installation of Flatpak apps may not be possible with Alpine.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
To get all of the available options to use with the &#039;&#039;&#039;flatpak&#039;&#039;&#039; command run: &#039;&#039;&#039;flatpak --help&#039;&#039;&#039; or &#039;&#039;&#039;flatpak -h&#039;&#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
To search for applications run &#039;&#039;&#039;flatpak search &amp;lt;appplicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak search chromium&lt;br /&gt;
Name                   Description                                                        Application ID                        Version       Branch  Remotes&lt;br /&gt;
Chromium Web Browser   The web browser from Chromium project                              org.chromium.Chromium                 96.0.4664.93  stable  flathub&lt;br /&gt;
Chromium B.S.U.        Fast paced, arcade-style, top-scrolling space shooter              net.sourceforge.chromium-bsu          0.9.16.1      stable  flathub&lt;br /&gt;
ungoogled-chromium     A lightweight approach to removing Google web service dependency   com.github.Eloston.UngoogledChromium  96.0.4664.45  stable  flathub&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install ===&lt;br /&gt;
&lt;br /&gt;
To install a package run &#039;&#039;&#039;flatpak install &amp;lt;applicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{cat|$ flatpak install com.github.Eloston.UngoogledChromium|Looking for matches…&lt;br /&gt;
&lt;br /&gt;
com.github.Eloston.UngoogledChromium permissions:&lt;br /&gt;
    ipc             network                 cups                   pulseaudio               wayland                       x11&lt;br /&gt;
    devices         file access [1]         dbus access [2]        bus ownership [3]        system dbus access [4]&lt;br /&gt;
&lt;br /&gt;
    [1] /run/.heim_org.h5l.kcm-socket, home, xdg-run/pipewire-0&lt;br /&gt;
    [2] org.freedesktop.FileManager1, org.freedesktop.Notifications, org.freedesktop.secrets, org.gnome.SessionManager&lt;br /&gt;
    [3] org.mpris.MediaPlayer2.chromium.*&lt;br /&gt;
    [4] org.freedesktop.Avahi, org.freedesktop.UPower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        ID                                                      Branch             Op            Remote             Download&lt;br /&gt;
 1.     com.github.Eloston.UngoogledChromium.Codecs             stable             i             flathub              &amp;lt; 1.1 MB&lt;br /&gt;
 2.     com.github.Eloston.UngoogledChromium.Locale             stable             i             flathub            &amp;lt; 112.8 kB&lt;br /&gt;
 3.     com.github.Eloston.UngoogledChromium                    stable             i             flathub            &amp;lt; 119.0 MB&lt;br /&gt;
&lt;br /&gt;
Proceed with these changes to the system installation? [Y/n]:}}&lt;br /&gt;
&lt;br /&gt;
or if you dont know or dont want to type the exact package name:&lt;br /&gt;
&lt;br /&gt;
{{cat|$ flatpak install chromium|Looking for matches…&lt;br /&gt;
Similar refs found for ‘chromium’ in remote ‘flathub’ (system):&lt;br /&gt;
&lt;br /&gt;
   1) app/net.sourceforge.chromium-bsu/x86_64/stable&lt;br /&gt;
   2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable&lt;br /&gt;
   3) runtime/org.chromium.Chromium.Codecs/x86_64/stable&lt;br /&gt;
   4) app/org.chromium.Chromium/x86_64/stable&lt;br /&gt;
   5) app/com.github.Eloston.UngoogledChromium/x86_64/stable&lt;br /&gt;
&lt;br /&gt;
Which do you want to use (0 to abort)? [0-5]:}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Remove ===&lt;br /&gt;
&lt;br /&gt;
To remove a package run: &#039;&#039;&#039;flatpak remove &amp;lt;applicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{cat|$ flatpak remove com.github.Eloston.UngoogledChromium|&lt;br /&gt;
&lt;br /&gt;
        ID                                                     Branch           Op&lt;br /&gt;
 1.     com.github.Eloston.UngoogledChromium                   stable           r&lt;br /&gt;
 2.     com.github.Eloston.UngoogledChromium.Codecs            stable           r&lt;br /&gt;
 3.     com.github.Eloston.UngoogledChromium.Locale            stable           r&lt;br /&gt;
&lt;br /&gt;
Proceed with these changes to the system installation? [Y/n]:}}&lt;br /&gt;
&lt;br /&gt;
or if you dont know or dont want to type the exact package name:&lt;br /&gt;
&lt;br /&gt;
{{cat|$ flatpak remove chromium|Similar installed refs found for ‘chromium’:&lt;br /&gt;
&lt;br /&gt;
   1) app/com.github.Eloston.UngoogledChromium/x86_64/stable (system)&lt;br /&gt;
   2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable (system)&lt;br /&gt;
   3) All of the above&lt;br /&gt;
&lt;br /&gt;
Which do you want to use (0 to abort)? [0-3]:}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Developers ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.flatpak.org/en/latest/available-runtimes.html Flatpak - available runtimes]&lt;br /&gt;
&lt;br /&gt;
These are all hosted on [https://flathub.org/ Flathub.org].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Permission errors ===&lt;br /&gt;
&lt;br /&gt;
If you receive errors about permissions then you may need to add your user to the &#039;&#039;&#039;flatpak&#039;&#039;&#039; group.&lt;br /&gt;
&lt;br /&gt;
{{Note|You need to log out and log back in or reboot for the group change(s) to take effect}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fixing audio issues ===&lt;br /&gt;
&lt;br /&gt;
If you have a minimal setup and don&#039;t have access to audio devices you will need to set the XDG_RUNTIME_DIR variable. Save the following script in {{Path|/etc/profile.d/xdg_runtime_dir.sh}} and re-login to have it set up properly.&lt;br /&gt;
&lt;br /&gt;
 if test -z &amp;quot;${XDG_RUNTIME_DIR}&amp;quot;; then&lt;br /&gt;
   export XDG_RUNTIME_DIR=/tmp/$(id -u)&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
When you launch a Flatpak you will need to start pulseaudio as well:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ pulseaudio --start &amp;amp;&amp;amp; flatpak run com.example.Example}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://flatpak.org/ Flatpak]&lt;br /&gt;
* [https://flathub.org/ Flathub]&lt;br /&gt;
* [https://winepak.github.io/ Winepak]&lt;br /&gt;
&lt;br /&gt;
[[Category:Package Manager]]&lt;br /&gt;
[[Category: Desktop]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User:Bbbhltz/learntowiki&amp;diff=23634</id>
		<title>User:Bbbhltz/learntowiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User:Bbbhltz/learntowiki&amp;diff=23634"/>
		<updated>2023-06-01T09:14:07Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: making a subpage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak search chromium&lt;br /&gt;
Name                   Description                                                        Application ID                        Version       Branch  Remotes&lt;br /&gt;
Chromium Web Browser   The web browser from Chromium project                              org.chromium.Chromium                 96.0.4664.93  stable  flathub&lt;br /&gt;
Chromium B.S.U.        Fast paced, arcade-style, top-scrolling space shooter              net.sourceforge.chromium-bsu          0.9.16.1      stable  flathub&lt;br /&gt;
ungoogled-chromium     A lightweight approach to removing Google web service dependency   com.github.Eloston.UngoogledChromium  96.0.4664.45  stable  flathub&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Flatpak&amp;diff=23633</id>
		<title>Flatpak</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Flatpak&amp;diff=23633"/>
		<updated>2023-06-01T08:31:25Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: some small formatting changes, content unchanged&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft|More documentation and testing is needed, but everything currently here should be safe to follow.}}&lt;br /&gt;
&lt;br /&gt;
Flatpak is a technology for building and distributing applications with the goal of having a universal package format for all Linux distributons, it is similar to [https://en.wikipedia.org/wiki/Snap_(software) Snap], &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup / Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;From: https://flatpak.org/setup/Alpine/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|To install Flatpak you will need to enable the  Community repository, See: [[Repositories#Managing_repositories|Repositories - Managing repositories]]}}&lt;br /&gt;
&lt;br /&gt;
To install Flatpak run:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add {{Pkg|flatpak}}}}&lt;br /&gt;
&lt;br /&gt;
Next you need to add a repository, for this guide we will use the recommended repository, [https://flathub.org Flathub].&lt;br /&gt;
&lt;br /&gt;
{{cmd|$ flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo}}&lt;br /&gt;
&lt;br /&gt;
Now reboot to complete setup&lt;br /&gt;
&lt;br /&gt;
{{Note|graphical installation of Flatpak apps may not be possible with Alpine.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
To get all of the available options to use with the &#039;&#039;&#039;flatpak&#039;&#039;&#039; command run: &#039;&#039;&#039;flatpak --help&#039;&#039;&#039; or &#039;&#039;&#039;flatpak -h&#039;&#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
To search for applications run &#039;&#039;&#039;flatpak search &amp;lt;appplicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
{{cat|$ flatpak search chromium|Name                   Description                                                        Application ID                        Version       Branch  Remotes&lt;br /&gt;
Chromium Web Browser   The web browser from Chromium project                              org.chromium.Chromium                 96.0.4664.93  stable  flathub&lt;br /&gt;
Chromium B.S.U.        Fast paced, arcade-style, top-scrolling space shooter              net.sourceforge.chromium-bsu          0.9.16.1      stable  flathub&lt;br /&gt;
ungoogled-chromium     A lightweight approach to removing Google web service dependency   com.github.Eloston.UngoogledChromium  96.0.4664.45  stable  flathub}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install ===&lt;br /&gt;
&lt;br /&gt;
To install a package run &#039;&#039;&#039;flatpak install &amp;lt;applicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{cat|$ flatpak install com.github.Eloston.UngoogledChromium|Looking for matches…&lt;br /&gt;
&lt;br /&gt;
com.github.Eloston.UngoogledChromium permissions:&lt;br /&gt;
    ipc             network                 cups                   pulseaudio               wayland                       x11&lt;br /&gt;
    devices         file access [1]         dbus access [2]        bus ownership [3]        system dbus access [4]&lt;br /&gt;
&lt;br /&gt;
    [1] /run/.heim_org.h5l.kcm-socket, home, xdg-run/pipewire-0&lt;br /&gt;
    [2] org.freedesktop.FileManager1, org.freedesktop.Notifications, org.freedesktop.secrets, org.gnome.SessionManager&lt;br /&gt;
    [3] org.mpris.MediaPlayer2.chromium.*&lt;br /&gt;
    [4] org.freedesktop.Avahi, org.freedesktop.UPower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        ID                                                      Branch             Op            Remote             Download&lt;br /&gt;
 1.     com.github.Eloston.UngoogledChromium.Codecs             stable             i             flathub              &amp;lt; 1.1 MB&lt;br /&gt;
 2.     com.github.Eloston.UngoogledChromium.Locale             stable             i             flathub            &amp;lt; 112.8 kB&lt;br /&gt;
 3.     com.github.Eloston.UngoogledChromium                    stable             i             flathub            &amp;lt; 119.0 MB&lt;br /&gt;
&lt;br /&gt;
Proceed with these changes to the system installation? [Y/n]:}}&lt;br /&gt;
&lt;br /&gt;
or if you dont know or dont want to type the exact package name:&lt;br /&gt;
&lt;br /&gt;
{{cat|$ flatpak install chromium|Looking for matches…&lt;br /&gt;
Similar refs found for ‘chromium’ in remote ‘flathub’ (system):&lt;br /&gt;
&lt;br /&gt;
   1) app/net.sourceforge.chromium-bsu/x86_64/stable&lt;br /&gt;
   2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable&lt;br /&gt;
   3) runtime/org.chromium.Chromium.Codecs/x86_64/stable&lt;br /&gt;
   4) app/org.chromium.Chromium/x86_64/stable&lt;br /&gt;
   5) app/com.github.Eloston.UngoogledChromium/x86_64/stable&lt;br /&gt;
&lt;br /&gt;
Which do you want to use (0 to abort)? [0-5]:}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Remove ===&lt;br /&gt;
&lt;br /&gt;
To remove a package run: &#039;&#039;&#039;flatpak remove &amp;lt;applicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{cat|$ flatpak remove com.github.Eloston.UngoogledChromium|&lt;br /&gt;
&lt;br /&gt;
        ID                                                     Branch           Op&lt;br /&gt;
 1.     com.github.Eloston.UngoogledChromium                   stable           r&lt;br /&gt;
 2.     com.github.Eloston.UngoogledChromium.Codecs            stable           r&lt;br /&gt;
 3.     com.github.Eloston.UngoogledChromium.Locale            stable           r&lt;br /&gt;
&lt;br /&gt;
Proceed with these changes to the system installation? [Y/n]:}}&lt;br /&gt;
&lt;br /&gt;
or if you dont know or dont want to type the exact package name:&lt;br /&gt;
&lt;br /&gt;
{{cat|$ flatpak remove chromium|Similar installed refs found for ‘chromium’:&lt;br /&gt;
&lt;br /&gt;
   1) app/com.github.Eloston.UngoogledChromium/x86_64/stable (system)&lt;br /&gt;
   2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable (system)&lt;br /&gt;
   3) All of the above&lt;br /&gt;
&lt;br /&gt;
Which do you want to use (0 to abort)? [0-3]:}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Developers ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.flatpak.org/en/latest/available-runtimes.html Flatpak - available runtimes]&lt;br /&gt;
&lt;br /&gt;
These are all hosted on [https://flathub.org/ Flathub.org].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Permission errors ===&lt;br /&gt;
&lt;br /&gt;
If you receive errors about permissions then you may need to add your user to the &#039;&#039;&#039;flatpak&#039;&#039;&#039; group.&lt;br /&gt;
&lt;br /&gt;
{{Note|You need to log out and log back in or reboot for the group change(s) to take effect}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fixing audio issues ===&lt;br /&gt;
&lt;br /&gt;
If you have a minimal setup and don&#039;t have access to audio devices you will need to set the XDG_RUNTIME_DIR variable. Save the following script in {{Path|/etc/profile.d/xdg_runtime_dir.sh}} and re-login to have it set up properly.&lt;br /&gt;
&lt;br /&gt;
 if test -z &amp;quot;${XDG_RUNTIME_DIR}&amp;quot;; then&lt;br /&gt;
   export XDG_RUNTIME_DIR=/tmp/$(id -u)&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
When you launch a Flatpak you will need to start pulseaudio as well:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ pulseaudio --start &amp;amp;&amp;amp; flatpak run com.example.Example}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://flatpak.org/ Flatpak]&lt;br /&gt;
* [https://flathub.org/ Flathub]&lt;br /&gt;
* [https://winepak.github.io/ Winepak]&lt;br /&gt;
&lt;br /&gt;
[[Category:Package Manager]]&lt;br /&gt;
[[Category: Desktop]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_make_a_cross_architecture_chroot&amp;diff=23632</id>
		<title>How to make a cross architecture chroot</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_make_a_cross_architecture_chroot&amp;diff=23632"/>
		<updated>2023-06-01T07:57:26Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: formatting, fixed broken link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you have an ARM computer, you will find that some software is only available for x86_64. One possible solution is to have a full x86_64 virtual machine, but that has quite a lot of overhead from having to emulate the entire system. Fortunately, there is [https://qemu-project.gitlab.io/qemu/user/main.html QEMU User space emulation] which still uses the host kernel, so there is less overhead. This guide will show you how to make a chroot and enable transparent x86_64 binary execution using qemu and binfmt_misc.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
You should be familiar with the Linux command line.&lt;br /&gt;
&lt;br /&gt;
This guide is written assuming you have Alpine as the main install as well as putting Alpine in the chroot.&lt;br /&gt;
&lt;br /&gt;
Also, the commands shown assume you have &#039;&#039;&#039;root&#039;&#039;&#039; privileges. Either use &amp;lt;code&amp;gt;sudo/doas&amp;lt;/code&amp;gt; as needed (or &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; first).&lt;br /&gt;
&lt;br /&gt;
== Installing necessary software ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Repositories#Managing_repositories| Enable the Community Repository]]&#039;&#039;&#039; and install the &#039;&#039;&#039;qemu&#039;&#039;&#039; user mode binaries for the architectures you want to use, in this case x86_64 and i386:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|qemu-x86_64}} {{Pkg|qemu-i386}}}}&lt;br /&gt;
&lt;br /&gt;
Please note there are the &amp;lt;code&amp;gt;qemu-system-*&amp;lt;/code&amp;gt; packages, you don&#039;t want those since they are used for full virtual machine emulation.&lt;br /&gt;
&lt;br /&gt;
Then, &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; my modified version of the qemu-binfmt script (originally from the [https://pkgs.alpinelinux.org/package/edge/community/aarch64/qemu-openrc qemu-openrc] package):&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# curl -o /etc/init.d/qemu-binfmt &#039;&amp;lt;nowiki&amp;gt;https://gist.githubusercontent.com/ktprograms/c8ea850abde717376ff7a6f83dbabb2f/raw/0ff0596e8f9f1891f272393fa1ff0529bcbcef5d/qemu-binfmt&amp;lt;/nowiki&amp;gt;&#039;}}&lt;br /&gt;
&lt;br /&gt;
I prefer to use this script instead of installing the {{Pkg|qemu-openrc}} package since that adds a lot of unneeded dependencies. Right now this only supports i386, x86_64, arm, ppc64le and s390x but I&#039;ll be adding all the architectures soon.&lt;br /&gt;
&lt;br /&gt;
Make the qemu-binfmt script executable:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# chmod +x /etc/init.d/qemu-binfmt}}&lt;br /&gt;
&lt;br /&gt;
== Enable the &amp;lt;code&amp;gt;qemu-binfmt&amp;lt;/code&amp;gt; service and start it ==&lt;br /&gt;
&lt;br /&gt;
The qemu-binfmt script is an OpenRC init script that registers the binfmt_misc handlers when the service starts and unregisters them when the service stops. Add the service to the default runlevel and start it immediately:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add qemu-binfmt default&lt;br /&gt;
&amp;amp;#35; rc-service qemu-binfmt start}}&lt;br /&gt;
&lt;br /&gt;
== Make the chroot folder ==&lt;br /&gt;
&lt;br /&gt;
To keep it simple, we&#039;re just going to use the apk repositories specified on the host system. This guide assumes the &amp;lt;code&amp;gt;$CHROOT&amp;lt;/code&amp;gt; environment variable holds the directory where you want to make the chroot. Make the chroot directory and the &amp;lt;code&amp;gt;etc/apk&amp;lt;/code&amp;gt; subdirectory (which we&#039;ll copy the apk repositories file to):&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mkdir -p $CHROOT/etc/apk/}}&lt;br /&gt;
&lt;br /&gt;
Now copy the host&#039;s apk repositories into the chroot folder:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# cp /etc/apk/repositories $CHROOT/etc/apk/}}&lt;br /&gt;
&lt;br /&gt;
You&#039;ll also need to copy the &amp;lt;code&amp;gt;resolv.conf&amp;lt;/code&amp;gt; file into the chroot so it can have internet access:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# cp /etc/resolv.conf $CHROOT/etc/}}&lt;br /&gt;
&lt;br /&gt;
== Install &amp;lt;code&amp;gt;alpine-base&amp;lt;/code&amp;gt; into the chroot folder ==&lt;br /&gt;
&lt;br /&gt;
The {{Pkg|alpine-base}} meta package is all that&#039;s needed to have a fully working alpine system. The apk invocation used here has a few more options than what you might be used to:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add -p $CHROOT --initdb -U --arch x86_64 --allow-untrusted alpine-base}}&lt;br /&gt;
&lt;br /&gt;
Here&#039;s what all the options do:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;-p $CHROOT&amp;lt;/code&amp;gt;: Sets the root of the install to &amp;lt;code&amp;gt;$CHROOT&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;--initdb&amp;lt;/code&amp;gt;: Initialize a new package database.&lt;br /&gt;
*&amp;lt;code&amp;gt;-U&amp;lt;/code&amp;gt;: Alias for &amp;lt;code&amp;gt;--cache-max-age 1&amp;lt;/code&amp;gt;. Basically means don&#039;t install from cache.&lt;br /&gt;
*&amp;lt;code&amp;gt;--arch x86_64&amp;lt;/code&amp;gt;: Install x86_64 packages instead of native packages. Replace this with whichever architecture you want to emulate instead (e.g. &amp;lt;code&amp;gt;--arch x86&amp;lt;/code&amp;gt;).&lt;br /&gt;
*&amp;lt;code&amp;gt;--allow-untrusted&amp;lt;/code&amp;gt;: Install packages with untrusted signature or no signature. (This is needed since the keys for different architectures are different than what will be on your host. If you have the correct keys, you can copy them into the &amp;lt;code&amp;gt;$CHROOT/etc/apk/keys/&amp;lt;/code&amp;gt; directory and remove this flag).&lt;br /&gt;
&lt;br /&gt;
== Mount the virtual file systems into the chroot ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mount -t proc proc $CHROOT/proc/&lt;br /&gt;
&amp;amp;#35; mount -t sysfs sys $CHROOT/sys/&lt;br /&gt;
&amp;amp;#35; mount -o bind /dev/ $CHROOT/dev/&lt;br /&gt;
&amp;amp;#35; mount -o bind /dev/pts/ $CHROOT/dev/pts/&lt;br /&gt;
&amp;amp;#35; mount -o bind /run $CHROOT/run/}}&lt;br /&gt;
&lt;br /&gt;
==The exciting part: Enter the chroot==&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve followed all the steps, this part should be uneventful. The &amp;lt;code&amp;gt;chroot&amp;lt;/code&amp;gt; invocation uses the special command of &amp;lt;code&amp;gt;ash -l&amp;lt;/code&amp;gt; to run as a login shell and source &amp;lt;code&amp;gt;/etc/profile&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# chroot $CHROOT/ ash -l}}&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
If you get a &amp;lt;code&amp;gt;ERROR: ${package_name}.post-install: script exited with error 127&amp;lt;/code&amp;gt; while trying to add the alpine-base, that normally means that qemu binfmt_misc hasn&#039;t been setup properly. Check if the &amp;lt;code&amp;gt;qemu-$arch&amp;lt;/code&amp;gt; package has been installed and see if the binfmt_misc service is running. You can also see if there is a &amp;lt;code&amp;gt;qemu-$arch&amp;lt;/code&amp;gt; entry in &amp;lt;code&amp;gt;/proc/sys/fs/binfmt_misc/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Programs that use [https://en.wikipedia.org/wiki/Netlink Netlink] (e.g. &amp;lt;code&amp;gt;ip addr&amp;lt;/code&amp;gt;) don&#039;t seem to work properly since qemu doesn&#039;t emulate the Netlink protocol properly.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
* [https://archive.is/ldO0C Transparently running binaries from any architecture in Linux with QEMU and binfmt_misc] (see the section titled &amp;lt;code&amp;gt;Emulating full ARM rootfs&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
[[Category:System Administration]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Damn_Vulnerable_Web_Application_(DVWA)&amp;diff=23625</id>
		<title>Damn Vulnerable Web Application (DVWA)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Damn_Vulnerable_Web_Application_(DVWA)&amp;diff=23625"/>
		<updated>2023-05-30T20:26:39Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: formatting tweaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For testing web security tools a target which has plenty vulnerabilities is needed. The [http://www.dvwa.co.uk Damn Vulnerable Web Application (DVWA)] provides a PHP/MySQL web application that is damn vulnerable.&lt;br /&gt;
&lt;br /&gt;
== Install lighttpd, PHP, and MySql ==&lt;br /&gt;
&lt;br /&gt;
{{:Setting Up Lighttpd With FastCGI}}&lt;br /&gt;
&lt;br /&gt;
Install extra packages:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add php5-mysql mysql mysql-client}}&lt;br /&gt;
&lt;br /&gt;
== Installing and configuring DVWA ==&lt;br /&gt;
&lt;br /&gt;
Create the a folder named {{Path|webapps}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mkdir -p /usr/share/webapps/}}&lt;br /&gt;
&lt;br /&gt;
Download the source archive and unpack it:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ cd /usr/share/webapps/&lt;br /&gt;
&amp;amp;#35; wget &amp;lt;nowiki&amp;gt;https://github.com/RandomStorm/DVWA/archive/v1.9.zip&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Unpack the archive and remove it:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# unzip v1.9.zip&lt;br /&gt;
&amp;amp;#35; rm v1.9.zip}}&lt;br /&gt;
&lt;br /&gt;
Change the folder permissions:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# chmod -R 777 /usr/share/webapps/}}&lt;br /&gt;
&lt;br /&gt;
Create a symlinks to the folder &#039;&#039;dvwa&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# ln -s /usr/share/webapps/dvwa/ /var/www/localhost/htdocs/dvwa}}&lt;br /&gt;
&lt;br /&gt;
== Configure and start MySql ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;# /usr/bin/mysql_install_db --user=mysql&lt;br /&gt;
# /etc/init.d/mariadb start &amp;amp;&amp;amp; rc-update add mariadb default&lt;br /&gt;
# /usr/bin/mysqladmin -u root password &#039;password&#039;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Modify the database credentials within DVWA configuration file {{Path|/config/config.inc.php}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# nano -w /usr/share/webapps/dvwa/config/config.inc.php}}&lt;br /&gt;
&lt;br /&gt;
To complete the setup, browse to the DVWA directory on the webserver.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://WEBSERVER_IP_ADDRESS/dvwa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Follow the link to setup the database.&lt;br /&gt;
&lt;br /&gt;
[[Category:PHP]] [[Category:SQL]] [[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Setting_Up_Lighttpd_With_FastCGI&amp;diff=23624</id>
		<title>Setting Up Lighttpd With FastCGI</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Setting_Up_Lighttpd_With_FastCGI&amp;diff=23624"/>
		<updated>2023-05-30T20:20:40Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: formatting and style tweaks, content unchanged&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basic Installation ==&lt;br /&gt;
&lt;br /&gt;
For installing the additional packages first &#039;&#039;&#039;[[Repositories#Managing_repositories|activate community packages]]&#039;&#039;&#039; and update the package index&lt;br /&gt;
&lt;br /&gt;
Install the required packages:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add lighttpd php7-common php7-session php7-iconv php7-json php7-gd php7-curl php7-xml php7-mysqli php7-imap php7-cgi fcgi php7-pdo php7-pdo_mysql php7-soap php7-xmlrpc php7-posix php7-mcrypt php7-gettext php7-ldap php7-ctype php7-dom php7-simplexml}}&lt;br /&gt;
&lt;br /&gt;
== Configure Lighttpd ==&lt;br /&gt;
&lt;br /&gt;
Edit lighttpd.conf ({{Path|/etc/lighttpd/lighttpd.conf}}) and uncomment the line:&lt;br /&gt;
&lt;br /&gt;
 include &amp;quot;mod_fastcgi.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Start &amp;lt;code&amp;gt;lighttpd&amp;lt;/code&amp;gt; service and add it to default runlevel ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service lighttpd start &amp;amp;&amp;amp; rc-update add lighttpd default}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;br /&gt;
[[Category:PHP]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Installation&amp;diff=23618</id>
		<title>Talk:Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Installation&amp;diff=23618"/>
		<updated>2023-05-30T10:46:25Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* New Discussions */ reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== New Discussions ==&lt;br /&gt;
&lt;br /&gt;
I wasn&#039;t here for most of the drama, but it might help with reducing redundant pages and poor verbiage if some of the other &amp;quot;install&amp;quot; pages were made subpages of this one. Instead of &amp;quot;Installing Alpine in a virtual machine&amp;quot;, &amp;quot;Installing Alpine on VMware ESXi&amp;quot;, &amp;quot;Alpine on ARM&amp;quot;, etc... we could group by hypervisor (if any), then architecture or firmware, then board, etc... existing only where there are differences between others of the same level. For example:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Installation/VirtualBox/BIOS&#039;&#039;&#039; - &lt;br /&gt;
* &#039;&#039;&#039;Installation/AARCH64/Raspberry Pi 4&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Installation/x86/Dell Inspiron 1525&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Alternatively, we could duplicate the top level installation page for each architecture (like the Gentoo Handbook). That would allow better nuance in the initial media preparation and boot process. This page would then simply provide a brief guide of choosing the correct arch. [[User:Arrogance|Arrogance]] ([[User talk:Arrogance|talk]]) 09:17, 30 May 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
:+1 for this idea. I&#039;m not a pro at this but it would make it easier to navigate. Is the subpage feature on for regular pages? [[User:Bbbhltz|bbbhltz]] ([[User talk:Bbbhltz|talk]]) 10:46, 30 May 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Resolved Discussions==&lt;br /&gt;
&lt;br /&gt;
=== Focused users and edits ===&lt;br /&gt;
&lt;br /&gt;
We are aware that wiki is not so complete but, last month wiki installation page are a crap ton of changes.. The wiki page tries to include so many information.. but it lacks of good structure, neither hav a good requirements page&lt;br /&gt;
&lt;br /&gt;
So then &#039;&#039;&#039;I separated the requirements detailed&#039;&#039;&#039; to a new wiki page, https://wiki.alpinelinux.org/wiki/Requirements, with all details and reduce significatively the installation page details to only RAM and SPACE storage.. &lt;br /&gt;
&lt;br /&gt;
Later added a section in https://wiki.alpinelinux.org/wiki/Alpine_newbie_install_manual#Ways_to_install_Alpine_listed_by_architectures so then &#039;&#039;&#039;users that need different methods of install does not need to crap&#039;&#039;&#039; with over information the only wiki installation page.. (over information) &#039;&#039;&#039;I mean over sentences of &amp;quot;for this ARM flafour go to here and here and for this toy go to here&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Last then i reduced rest of info to improved independent pages of each one!&#039;&#039;&#039; &lt;br /&gt;
Contributions must be focused in independent cases and listed in how to and tutorial wiki page .. so then i can check and later listed at new users tutorial pages.&lt;br /&gt;
&lt;br /&gt;
All of this new pages will be improved in next days. Currently information was slpitted and improved to reduce the oversized installation page!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;About changes and recent diff from SB1 June and July changes..&#039;&#039;&#039;.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Checksum command is a extra optional info&#039;&#039;&#039;: first note are the checksum command to verify.. only takes in consideration linux (ovbiusly will be so &amp;quot;rare&amp;quot; if not) and win! there&#039; is no more OS in the world? there&#039;s no MAC or FreeBSD? is clear Alpine need minimal linux knowledge so are nonsense try to catch win users without minimal linux knowledge.. specific pages for that must be done! not in main install pages!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Boot of external devices&#039;&#039;&#039; depends of each computer device so each wiki page cases of architecture installation must added its own information&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;also the use Sb1 erased/changed so many information&#039;&#039;&#039; and does not property posted in any other page .. (i mean setup alpine or similar) all the info was grouped and pasted in main installation page.. oversized the target of.. the good examples of wiki pages must be like:  https://wiki.alpinelinux.org/wiki/Alpine_Linux:FAQ#What_is_the_difference_between_.27sys.27.2C_.27data.27.2C_and_.27diskless.27_when_running_.27setup-alpine.27_or_.27setup-disk.27.3F makes references to install page as further deep information available.. but this page as i said was changed significatively.. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:mckaygerhard|mckaygerhard]] July 2020&lt;br /&gt;
&lt;br /&gt;
* Sorry, it&#039;s problematic when your edits **replace** concise pages with your &amp;quot;alpine newbie&amp;quot; series style. (And that repeatedly.) For readers looking for information, these are a quite much convoluted agglomeration of multiple, unmaintainable pages with much overlapping and duplicate information and do not refrain from opinionated jargon. &amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;For example, it does not make much sense to move the recommended image verification commands into some [[Requirements]] page. That page is immense and convoluted with unmaintanable tables that for example only resemble statistics about the currently downloadable images. Further, parts of it are duplicated in the plethora of &amp;quot;Alpine_newbie&amp;quot; install recipes (in which readers that follow it or want to look up something to get lost in, without getting a much needed overview and information about the available options, to end up being able to arrive at well informed decisions). &amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;  =&amp;gt;  So there are good reasons why your changes were reverted (12:40, 12 December 2020‎ &amp;quot;Reverting as of https://lists.alpinelinux.org/~alpine/devel/&amp;lt;20201002143513.yco7vwx2ci3lqezm@wolfsden.cz&amp;gt; Second time user Mckaygerhard pulled stunt on this page. (Aug.13/19 &amp;amp; Jul.12/20))&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Template_talk:Delete&amp;diff=23582</id>
		<title>Template talk:Delete</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Template_talk:Delete&amp;diff=23582"/>
		<updated>2023-05-30T06:12:16Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: Reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It might help admins to delete pages better (or others to fix the articles / contest their deletion) if this template included a category. &amp;lt;nowiki&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Articles for deletion]]&amp;lt;/includeonly&amp;gt;&amp;lt;/nowiki&amp;gt;, for example. I&#039;d add it myself, but for some reason it&#039;s been made admin-only.[[User:Arrogance|Arrogance]] ([[User talk:Arrogance|talk]]) 04:04, 30 May 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Like this? https://wiki.alpinelinux.org/wiki/Special:WhatLinksHere/Template:Delete [[User:Bbbhltz|bbbhltz]] ([[User talk:Bbbhltz|talk]]) 05:25, 30 May 2023 (UTC)&lt;br /&gt;
::No. Lots of pages can potentially link to a template without using it, or needing to be deleted. It also makes it easier to parse with tools. [[User:Arrogance|Arrogance]] ([[User talk:Arrogance|talk]]) 06:03, 30 May 2023 (UTC)&lt;br /&gt;
:::OK. I just understood what you meant. [[User:Bbbhltz|bbbhltz]] ([[User talk:Bbbhltz|talk]]) 06:12, 30 May 2023 (UTC)&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Template_talk:Delete&amp;diff=23578</id>
		<title>Template talk:Delete</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Template_talk:Delete&amp;diff=23578"/>
		<updated>2023-05-30T05:25:47Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: Reply to Arrogance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It might help admins to delete pages better (or others to fix the articles / contest their deletion) if this template included a category. &amp;lt;nowiki&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Articles for deletion]]&amp;lt;/includeonly&amp;gt;&amp;lt;/nowiki&amp;gt;, for example. I&#039;d add it myself, but for some reason it&#039;s been made admin-only.[[User:Arrogance|Arrogance]] ([[User talk:Arrogance|talk]]) 04:04, 30 May 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Like this? https://wiki.alpinelinux.org/wiki/Special:WhatLinksHere/Template:Delete [[User:Bbbhltz|bbbhltz]] ([[User talk:Bbbhltz|talk]]) 05:25, 30 May 2023 (UTC)&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Category:Web_Browser&amp;diff=23544</id>
		<title>Category:Web Browser</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Category:Web_Browser&amp;diff=23544"/>
		<updated>2023-05-29T19:27:11Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: added Tor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A web browser is an application for accessing websites. When a user requests a web page from a particular website, the browser retrieves its files from a web server and then displays the page on the user’s screen.&lt;br /&gt;
&lt;br /&gt;
Alpine Linux packages several web browsers.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Elinks&#039;&#039;&#039; {{Pkg|elinks}}: feature-rich text mode web browser&lt;br /&gt;
* &#039;&#039;&#039;Links&#039;&#039;&#039; {{Pkg|links}}/{{Pkg|links-graphics}}: web browser with both graphics and text mode&lt;br /&gt;
* &#039;&#039;&#039;Lynx&#039;&#039;&#039; {{Pkg|lynx}}: text-based browser&lt;br /&gt;
* &#039;&#039;&#039;w3m&#039;&#039;&#039; {{Pkg|w3m}}: text-based web &amp;amp;amp; gopher browser, as well as pager&lt;br /&gt;
&lt;br /&gt;
== Graphical ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Badwolf&#039;&#039;&#039; {{Pkg|badwolf}}: A minimalist and privacy-oriented WebKit browser&lt;br /&gt;
* &#039;&#039;&#039;Chromium&#039;&#039;&#039; {{Pkg|chromium}}: the open source project behind Google Chrome, Blink-based&lt;br /&gt;
* &#039;&#039;&#039;Dillo&#039;&#039;&#039; {{Pkg|dillo}}: small and fast GUI web browser&lt;br /&gt;
* &#039;&#039;&#039;Epiphany/GNOME Web&#039;&#039;&#039; {{Pkg|epiphany}}: GNOME&#039;s WebKitGTK-based browser &lt;br /&gt;
* &#039;&#039;&#039;[[Firefox]]&#039;&#039;&#039;: browser from Mozilla based on Gecko with fast rendering&lt;br /&gt;
* &#039;&#039;&#039;Midori&#039;&#039;&#039; {{Pkg|midori}}: web browser based on GTK and WebKit&lt;br /&gt;
* &#039;&#039;&#039;Netsurf&#039;&#039;&#039; {{Pkg|netsurf}}: an open source web browser&lt;br /&gt;
* &#039;&#039;&#039;Nyxt&#039;&#039;&#039; {{Pkg|nyxt}}: the &#039;&#039;“hacker’s browser”&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Qutebrowser&#039;&#039;&#039; {{Pkg|qutebrowser}}: keyboard-driven, Vim-like browser based on PyQT5&lt;br /&gt;
* &#039;&#039;&#039;Surf&#039;&#039;&#039; {{Pkg|surf}}: a simple web browser based on WebKit2/GTK+&lt;br /&gt;
* &#039;&#039;&#039;Tor&#039;&#039;&#039; {{Pkg|tor}}: a modified Mozilla Firefox ESR web browser used for accessing the Tor network — usually not recommended for general web browsing&lt;br /&gt;
* &#039;&#039;&#039;Vieb&#039;&#039;&#039; {{Pkg|vieb}}: Vim-inspired Electron browser&lt;br /&gt;
* &#039;&#039;&#039;Vimb&#039;&#039;&#039; {{Pkg|vimb}}: a Vim-like browser&lt;br /&gt;
&lt;br /&gt;
[[category: Desktop]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Category:Web_Browser&amp;diff=23543</id>
		<title>Category:Web Browser</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Category:Web_Browser&amp;diff=23543"/>
		<updated>2023-05-29T19:22:16Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: had an epiphany&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A web browser is an application for accessing websites. When a user requests a web page from a particular website, the browser retrieves its files from a web server and then displays the page on the user’s screen.&lt;br /&gt;
&lt;br /&gt;
Alpine Linux packages several web browsers.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Elinks&#039;&#039;&#039; {{Pkg|elinks}}: feature-rich text mode web browser&lt;br /&gt;
* &#039;&#039;&#039;Links&#039;&#039;&#039; {{Pkg|links}}/{{Pkg|links-graphics}}: web browser with both graphics and text mode&lt;br /&gt;
* &#039;&#039;&#039;Lynx&#039;&#039;&#039; {{Pkg|lynx}}: text-based browser&lt;br /&gt;
* &#039;&#039;&#039;w3m&#039;&#039;&#039; {{Pkg|w3m}}: text-based web &amp;amp;amp; gopher browser, as well as pager&lt;br /&gt;
&lt;br /&gt;
== Graphical ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Badwolf&#039;&#039;&#039; {{Pkg|badwolf}}: A minimalist and privacy-oriented WebKit browser&lt;br /&gt;
* &#039;&#039;&#039;Chromium&#039;&#039;&#039; {{Pkg|chromium}}: the open source project behind Google Chrome, Blink-based&lt;br /&gt;
* &#039;&#039;&#039;Dillo&#039;&#039;&#039; {{Pkg|dillo}}: small and fast GUI web browser&lt;br /&gt;
* &#039;&#039;&#039;Epiphany/GNOME Web&#039;&#039;&#039; {{Pkg|epiphany}}: GNOME&#039;s WebKitGTK-based browser &lt;br /&gt;
* &#039;&#039;&#039;[[Firefox]]&#039;&#039;&#039;: browser from Mozilla based on Gecko with fast rendering&lt;br /&gt;
* &#039;&#039;&#039;Midori&#039;&#039;&#039; {{Pkg|midori}}: web browser based on GTK and WebKit&lt;br /&gt;
* &#039;&#039;&#039;Netsurf&#039;&#039;&#039; {{Pkg|netsurf}}: an open source web browser&lt;br /&gt;
* &#039;&#039;&#039;Nyxt&#039;&#039;&#039; {{Pkg|nyxt}}: the &#039;&#039;“hacker’s browser”&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Qutebrowser&#039;&#039;&#039; {{Pkg|qutebrowser}}: keyboard-driven, Vim-like browser based on PyQT5&lt;br /&gt;
* &#039;&#039;&#039;Surf&#039;&#039;&#039; {{Pkg|surf}}: a simple web browser based on WebKit2/GTK+&lt;br /&gt;
* &#039;&#039;&#039;Vieb&#039;&#039;&#039; {{Pkg|vieb}}: Vim-inspired Electron browser&lt;br /&gt;
* &#039;&#039;&#039;Vimb&#039;&#039;&#039; {{Pkg|vimb}}: a Vim-like browser&lt;br /&gt;
&lt;br /&gt;
[[category: Desktop]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Category:Web_Browser&amp;diff=23542</id>
		<title>Category:Web Browser</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Category:Web_Browser&amp;diff=23542"/>
		<updated>2023-05-29T19:13:58Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: added list to category page to help new users discover which browsers are available in Alpine&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A web browser is an application for accessing websites. When a user requests a web page from a particular website, the browser retrieves its files from a web server and then displays the page on the user’s screen.&lt;br /&gt;
&lt;br /&gt;
Alpine Linux packages several web browsers.&lt;br /&gt;
&lt;br /&gt;
== Console ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Elinks&#039;&#039;&#039; {{Pkg|elinks}}: feature-rich text mode web browser&lt;br /&gt;
* &#039;&#039;&#039;Links&#039;&#039;&#039; {{Pkg|links}}/{{Pkg|links-graphics}}: web browser with both graphics and text mode&lt;br /&gt;
* &#039;&#039;&#039;Lynx&#039;&#039;&#039; {{Pkg|lynx}}: text-based browser&lt;br /&gt;
* &#039;&#039;&#039;w3m&#039;&#039;&#039; {{Pkg|w3m}}: text-based web &amp;amp;amp; gopher browser, as well as pager&lt;br /&gt;
&lt;br /&gt;
== Graphical ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Badwolf&#039;&#039;&#039; {{Pkg|badwolf}}: A minimalist and privacy-oriented WebKit browser&lt;br /&gt;
* &#039;&#039;&#039;Chromium&#039;&#039;&#039; {{Pkg|chromium}}: the open source project behind Google Chrome, Blink-based&lt;br /&gt;
* &#039;&#039;&#039;Dillo&#039;&#039;&#039; {{Pkg|dillo}}: small and fast GUI web browser&lt;br /&gt;
* &#039;&#039;&#039;[[Firefox]]&#039;&#039;&#039;: browser from Mozilla based on Gecko with fast rendering&lt;br /&gt;
* &#039;&#039;&#039;Midori&#039;&#039;&#039; {{Pkg|midori}}: web browser based on GTK and WebKit&lt;br /&gt;
* &#039;&#039;&#039;Netsurf&#039;&#039;&#039; {{Pkg|netsurf}}: an open source web browser&lt;br /&gt;
* &#039;&#039;&#039;Nyxt&#039;&#039;&#039; {{Pkg|nyxt}}: the &#039;&#039;“hacker’s browser”&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Qutebrowser&#039;&#039;&#039; {{Pkg|qutebrowser}}: keyboard-driven, Vim-like browser based on PyQT5&lt;br /&gt;
* &#039;&#039;&#039;Surf&#039;&#039;&#039; {{Pkg|surf}}: a simple web browser based on WebKit2/GTK+&lt;br /&gt;
* &#039;&#039;&#039;Vieb&#039;&#039;&#039; {{Pkg|vieb}}: Vim-inspired Electron browser&lt;br /&gt;
* &#039;&#039;&#039;Vimb&#039;&#039;&#039; {{Pkg|vimb}}: a Vim-like browser&lt;br /&gt;
&lt;br /&gt;
[[category: Desktop]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Firefox&amp;diff=23541</id>
		<title>Firefox</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Firefox&amp;diff=23541"/>
		<updated>2023-05-29T19:01:33Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: minor formatting/style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Firefox is a popular, open-source [https://en.wikipedia.org/wiki/Web_browser web browser].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
To install Firefox, firstly enable the [[Repositories#Enabling_the_community_repository|Community repository]], then type in the terminal:&lt;br /&gt;
&lt;br /&gt;
For the Extended Support Release (ESR) ({{Pkg|firefox-esr}}):&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add firefox-esr}}&lt;br /&gt;
&lt;br /&gt;
For the current release ({{Pkg|firefox}}):&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add firefox}}&lt;br /&gt;
&lt;br /&gt;
== Stability ==&lt;br /&gt;
&lt;br /&gt;
If [https://support.mozilla.org/en-US/questions/1175046 tabs crash], then try disabling hardware acceleration, in the Preferences - Performance menu.&lt;br /&gt;
&lt;br /&gt;
== Notifications ==&lt;br /&gt;
&lt;br /&gt;
For Firefox to use native notifications (e.g.: via a notification daemon) the {{Pkg|libnotify}} package is required.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [https://git.alpinelinux.org/aports/log/?id=05e5fbf809000e016eee3fdfdaffb6e39a4956fd&amp;amp;qt=grep&amp;amp;q=firefox Git repositories for Alpine Linux]&lt;br /&gt;
* [https://stackoverflow.com/questions/51806403/installation-of-firefox-from-alpine-edge Installation of Firefox from Alpine Edge]&lt;br /&gt;
&lt;br /&gt;
[[category: Web Browser]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=K8s&amp;diff=23526</id>
		<title>K8s</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=K8s&amp;diff=23526"/>
		<updated>2023-05-26T21:03:31Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: added category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Alpine Linux &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;evergreen_tree&amp;quot;&amp;gt;🌲&amp;lt;/span&amp;gt; K8s in 10 Minutes =&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
This guide will allow you to deploy a fresh Alpine Linux install into a Kubernetes K8 cluster in less than 10 minutes.&lt;br /&gt;
&lt;br /&gt;
== Why &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;sparkles&amp;quot;&amp;gt;✨&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
I went to learn Kubernetes recently and I built a k3 cluster using Alpine in an hour or so, it was a great experience. I figured the next step would be K8s, but I found no material on K8s for Alpine. This guide is the result of my first pass and the incorporations of high quality notes from the contributers. Kubernetes &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;unicorn&amp;quot;&amp;gt;🦄&amp;lt;/span&amp;gt; is awesome.&lt;br /&gt;
&lt;br /&gt;
== Contributers ==&lt;br /&gt;
&lt;br /&gt;
* Matthew Rogers [https://github.com/RamboRogers Github] [https://www.linkedin.com/in/matthewrogerscissp/ LinkedIn]&lt;br /&gt;
* Mike Zolla [https://github.com/Zolla-Zolla Github] [https://www.linkedin.com/in/mike-zolla-5903b8/ LinkedIn]&lt;br /&gt;
* Matthew Emmett [https://github.com/mattemmett Github] [https://www.linkedin.com/in/mattemmett/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
= Build K8s on Alpine Linux &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;evergreen_tree&amp;quot;&amp;gt;🌲&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;mag&amp;quot;&amp;gt;🔍&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
You need an [https://alpinelinux.org/ Alpine Linux] install (this guide is written against version 3.17 standard image) with internet access. I recommend at least 2 CPU with 4GB of ram and 10GB of disk for each node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;For HA control planes you&#039;ll need a mininum of three nodes&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1. Setup the Repositories &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;green_book&amp;quot;&amp;gt;📗&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Update you repositories under {{Path|/etc/apk/repositories}} to include &#039;&#039;&#039;community&#039;&#039;&#039;, &#039;&#039;&#039;edge community&#039;&#039;&#039; and &#039;&#039;&#039;testing&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/apk/repositories|#/media/cdrom/apks&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/v3.17/main&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/v3.17/community&lt;br /&gt;
#http://dl-cdn.alpinelinux.org/alpine/edge/main&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/edge/community&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/edge/testing}}&lt;br /&gt;
&lt;br /&gt;
=== 2. Node Setup &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;desktop_computer&amp;quot;&amp;gt;🖥️&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This series of commands solves a series is incremental problems and sets up the system (if the first control node) for kubectl/kubeadm to run properly on next login by linking the config.&lt;br /&gt;
&lt;br /&gt;
The result here gives you a functional node that can be joined to an existing cluster or can become the first control plane of a new cluster. &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;notes&amp;quot;&amp;gt;🎶&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|&amp;lt;span class{{=}}&amp;quot;emoji&amp;quot; data-emoji{{=}}&amp;quot;bell&amp;quot;&amp;gt;🔔&amp;lt;/span&amp;gt; This build assumes CNI usage of flannel for networking &amp;lt;span class{{=}}&amp;quot;emoji&amp;quot; data-emoji{{=}}&amp;quot;bell&amp;quot;&amp;gt;🔔&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Add kernel module for networking stuff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# echo &amp;quot;br_netfilter&amp;quot; &amp;gt; /etc/modules-load.d/k8s.conf&lt;br /&gt;
&amp;amp;#35; modprobe br_netfilter&lt;br /&gt;
&amp;amp;#35; echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|cni-plugin-flannel}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|cni-plugins}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|flannel}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|flannel-contrib-cni}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|kubelet}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|kubeadm}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|kubectl}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|containerd}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|uuidgen}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|nfs-utils}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Get rid of swap&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# cat /etc/fstab | grep -v swap &amp;gt; temp.fstab&lt;br /&gt;
&amp;amp;#35; cat temp.fstab &amp;gt; /etc/fstab&lt;br /&gt;
&amp;amp;#35; rm temp.fstab&lt;br /&gt;
&amp;amp;#35; swapoff -a}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fix prometheus errors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mount --make-rshared /&lt;br /&gt;
# echo &amp;quot;#!/bin/sh&amp;quot; &amp;gt; /etc/local.d/sharemetrics.start&lt;br /&gt;
# echo &amp;quot;mount --make-rshared /&amp;quot; &amp;gt;&amp;gt; /etc/local.d/sharemetrics.start&lt;br /&gt;
# chmod +x /etc/local.d/sharemetrics.start&lt;br /&gt;
# rc-update add local}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fix id error messages&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# uuidgen &amp;gt; /etc/machine-id}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Add services&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add containerd&lt;br /&gt;
&amp;amp;#35; rc-update add kubelet}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sync time&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add ntpd&lt;br /&gt;
&amp;amp;#35; /etc/init.d/ntpd start&lt;br /&gt;
&amp;amp;#35; /etc/init.d/containerd start}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fix flannel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# ln -s /usr/libexec/cni/flannel-amd64 /usr/libexec/cni/flannel}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kernel stuff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# echo &amp;quot;net.bridge.bridge-nf-call-iptables{{=}}1&amp;quot; &amp;gt;&amp;gt; /etc/sysctl.conf&lt;br /&gt;
&amp;amp;#35; sysctl net.bridge.bridge-nf-call-iptables{{=}}1}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pin your versions!&#039;&#039;&#039;  If you update and the nodes get out of sync, it implodes.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add &#039;kubelet{{=}}~1.26&#039;&lt;br /&gt;
&amp;amp;#35; apk add &#039;kubeadm{{=}}~1.26&#039;&lt;br /&gt;
&amp;amp;#35; apk add &#039;kubectl{{=}}~1.26&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|In the future you will manually have to add a newer version the same way to upgrade.}}&lt;br /&gt;
&lt;br /&gt;
Your blank node is now ready! If it&#039;s the first, you&#039;ll want to make a control node.&lt;br /&gt;
&lt;br /&gt;
=== 3. Setup the Control Plane (New Cluster!) &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;mechanical_arm&amp;quot;&amp;gt;🦾&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Run this command to start the cluster and then apply a network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#do not change subnet&lt;br /&gt;
kubeadm init --pod-network-cidr=10.244.0.0/16 --node-name=$(hostname)&lt;br /&gt;
mkdir ~/.kube&lt;br /&gt;
ln -s /etc/kubernetes/admin.conf /root/.kube/config&lt;br /&gt;
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You now have a control plane. This also gives you the command to run on our blank nodes to add them to this cluster as workers.&lt;br /&gt;
&lt;br /&gt;
=== 4. Join the cluster. &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;ant&amp;quot;&amp;gt;🐜&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Run this to get the join command from the control plane which you would then run on your new worker.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kubeadm token create --print-join-command &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bonus &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;moneybag&amp;quot;&amp;gt;💰&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
== Setup NFS Mounts on K8s ==&lt;br /&gt;
&lt;br /&gt;
This can be shared NFS storage to allow for auto persistent claim fulfilment. You&#039;ll need your IP updated and export information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/&lt;br /&gt;
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \&lt;br /&gt;
    --set nfs.server=192.168.1.31 \&lt;br /&gt;
    --set nfs.path=/exports/cluster00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now set the default storage class for the cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;kubectl get storageclass&lt;br /&gt;
kubectl patch storageclass nfs-client -p &#039;{&amp;amp;quot;metadata&amp;amp;quot;: {&amp;amp;quot;annotations&amp;amp;quot;:{&amp;amp;quot;storageclass.kubernetes.io/is-default-class&amp;amp;quot;:&amp;amp;quot;true&amp;amp;quot;}}}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Check on System &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;eyes&amp;quot;&amp;gt;👀&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Check on your system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;kubectl get nodes&lt;br /&gt;
kubectl get all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Virtualization]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=K8s&amp;diff=23525</id>
		<title>K8s</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=K8s&amp;diff=23525"/>
		<updated>2023-05-26T21:02:43Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* 1. Setup the Repositories 📗 */ formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Alpine Linux &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;evergreen_tree&amp;quot;&amp;gt;🌲&amp;lt;/span&amp;gt; K8s in 10 Minutes =&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
This guide will allow you to deploy a fresh Alpine Linux install into a Kubernetes K8 cluster in less than 10 minutes.&lt;br /&gt;
&lt;br /&gt;
== Why &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;sparkles&amp;quot;&amp;gt;✨&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
I went to learn Kubernetes recently and I built a k3 cluster using Alpine in an hour or so, it was a great experience. I figured the next step would be K8s, but I found no material on K8s for Alpine. This guide is the result of my first pass and the incorporations of high quality notes from the contributers. Kubernetes &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;unicorn&amp;quot;&amp;gt;🦄&amp;lt;/span&amp;gt; is awesome.&lt;br /&gt;
&lt;br /&gt;
== Contributers ==&lt;br /&gt;
&lt;br /&gt;
* Matthew Rogers [https://github.com/RamboRogers Github] [https://www.linkedin.com/in/matthewrogerscissp/ LinkedIn]&lt;br /&gt;
* Mike Zolla [https://github.com/Zolla-Zolla Github] [https://www.linkedin.com/in/mike-zolla-5903b8/ LinkedIn]&lt;br /&gt;
* Matthew Emmett [https://github.com/mattemmett Github] [https://www.linkedin.com/in/mattemmett/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
= Build K8s on Alpine Linux &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;evergreen_tree&amp;quot;&amp;gt;🌲&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;mag&amp;quot;&amp;gt;🔍&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
You need an [https://alpinelinux.org/ Alpine Linux] install (this guide is written against version 3.17 standard image) with internet access. I recommend at least 2 CPU with 4GB of ram and 10GB of disk for each node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;For HA control planes you&#039;ll need a mininum of three nodes&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1. Setup the Repositories &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;green_book&amp;quot;&amp;gt;📗&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Update you repositories under {{Path|/etc/apk/repositories}} to include &#039;&#039;&#039;community&#039;&#039;&#039;, &#039;&#039;&#039;edge community&#039;&#039;&#039; and &#039;&#039;&#039;testing&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/apk/repositories|#/media/cdrom/apks&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/v3.17/main&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/v3.17/community&lt;br /&gt;
#http://dl-cdn.alpinelinux.org/alpine/edge/main&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/edge/community&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/edge/testing}}&lt;br /&gt;
&lt;br /&gt;
=== 2. Node Setup &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;desktop_computer&amp;quot;&amp;gt;🖥️&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This series of commands solves a series is incremental problems and sets up the system (if the first control node) for kubectl/kubeadm to run properly on next login by linking the config.&lt;br /&gt;
&lt;br /&gt;
The result here gives you a functional node that can be joined to an existing cluster or can become the first control plane of a new cluster. &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;notes&amp;quot;&amp;gt;🎶&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|&amp;lt;span class{{=}}&amp;quot;emoji&amp;quot; data-emoji{{=}}&amp;quot;bell&amp;quot;&amp;gt;🔔&amp;lt;/span&amp;gt; This build assumes CNI usage of flannel for networking &amp;lt;span class{{=}}&amp;quot;emoji&amp;quot; data-emoji{{=}}&amp;quot;bell&amp;quot;&amp;gt;🔔&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Add kernel module for networking stuff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# echo &amp;quot;br_netfilter&amp;quot; &amp;gt; /etc/modules-load.d/k8s.conf&lt;br /&gt;
&amp;amp;#35; modprobe br_netfilter&lt;br /&gt;
&amp;amp;#35; echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|cni-plugin-flannel}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|cni-plugins}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|flannel}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|flannel-contrib-cni}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|kubelet}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|kubeadm}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|kubectl}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|containerd}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|uuidgen}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|nfs-utils}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Get rid of swap&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# cat /etc/fstab | grep -v swap &amp;gt; temp.fstab&lt;br /&gt;
&amp;amp;#35; cat temp.fstab &amp;gt; /etc/fstab&lt;br /&gt;
&amp;amp;#35; rm temp.fstab&lt;br /&gt;
&amp;amp;#35; swapoff -a}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fix prometheus errors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mount --make-rshared /&lt;br /&gt;
# echo &amp;quot;#!/bin/sh&amp;quot; &amp;gt; /etc/local.d/sharemetrics.start&lt;br /&gt;
# echo &amp;quot;mount --make-rshared /&amp;quot; &amp;gt;&amp;gt; /etc/local.d/sharemetrics.start&lt;br /&gt;
# chmod +x /etc/local.d/sharemetrics.start&lt;br /&gt;
# rc-update add local}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fix id error messages&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# uuidgen &amp;gt; /etc/machine-id}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Add services&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add containerd&lt;br /&gt;
&amp;amp;#35; rc-update add kubelet}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sync time&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add ntpd&lt;br /&gt;
&amp;amp;#35; /etc/init.d/ntpd start&lt;br /&gt;
&amp;amp;#35; /etc/init.d/containerd start}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fix flannel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# ln -s /usr/libexec/cni/flannel-amd64 /usr/libexec/cni/flannel}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kernel stuff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# echo &amp;quot;net.bridge.bridge-nf-call-iptables{{=}}1&amp;quot; &amp;gt;&amp;gt; /etc/sysctl.conf&lt;br /&gt;
&amp;amp;#35; sysctl net.bridge.bridge-nf-call-iptables{{=}}1}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pin your versions!&#039;&#039;&#039;  If you update and the nodes get out of sync, it implodes.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add &#039;kubelet{{=}}~1.26&#039;&lt;br /&gt;
&amp;amp;#35; apk add &#039;kubeadm{{=}}~1.26&#039;&lt;br /&gt;
&amp;amp;#35; apk add &#039;kubectl{{=}}~1.26&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|In the future you will manually have to add a newer version the same way to upgrade.}}&lt;br /&gt;
&lt;br /&gt;
Your blank node is now ready! If it&#039;s the first, you&#039;ll want to make a control node.&lt;br /&gt;
&lt;br /&gt;
=== 3. Setup the Control Plane (New Cluster!) &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;mechanical_arm&amp;quot;&amp;gt;🦾&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Run this command to start the cluster and then apply a network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#do not change subnet&lt;br /&gt;
kubeadm init --pod-network-cidr=10.244.0.0/16 --node-name=$(hostname)&lt;br /&gt;
mkdir ~/.kube&lt;br /&gt;
ln -s /etc/kubernetes/admin.conf /root/.kube/config&lt;br /&gt;
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You now have a control plane. This also gives you the command to run on our blank nodes to add them to this cluster as workers.&lt;br /&gt;
&lt;br /&gt;
=== 4. Join the cluster. &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;ant&amp;quot;&amp;gt;🐜&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Run this to get the join command from the control plane which you would then run on your new worker.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kubeadm token create --print-join-command &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bonus &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;moneybag&amp;quot;&amp;gt;💰&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
== Setup NFS Mounts on K8s ==&lt;br /&gt;
&lt;br /&gt;
This can be shared NFS storage to allow for auto persistent claim fulfilment. You&#039;ll need your IP updated and export information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/&lt;br /&gt;
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \&lt;br /&gt;
    --set nfs.server=192.168.1.31 \&lt;br /&gt;
    --set nfs.path=/exports/cluster00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now set the default storage class for the cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;kubectl get storageclass&lt;br /&gt;
kubectl patch storageclass nfs-client -p &#039;{&amp;amp;quot;metadata&amp;amp;quot;: {&amp;amp;quot;annotations&amp;amp;quot;:{&amp;amp;quot;storageclass.kubernetes.io/is-default-class&amp;amp;quot;:&amp;amp;quot;true&amp;amp;quot;}}}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Check on System &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;eyes&amp;quot;&amp;gt;👀&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Check on your system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;kubectl get nodes&lt;br /&gt;
kubectl get all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=K8s&amp;diff=23524</id>
		<title>K8s</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=K8s&amp;diff=23524"/>
		<updated>2023-05-26T21:01:25Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* 2. Node Setup 🖥️ */ formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Alpine Linux &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;evergreen_tree&amp;quot;&amp;gt;🌲&amp;lt;/span&amp;gt; K8s in 10 Minutes =&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
This guide will allow you to deploy a fresh Alpine Linux install into a Kubernetes K8 cluster in less than 10 minutes.&lt;br /&gt;
&lt;br /&gt;
== Why &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;sparkles&amp;quot;&amp;gt;✨&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
I went to learn Kubernetes recently and I built a k3 cluster using Alpine in an hour or so, it was a great experience. I figured the next step would be K8s, but I found no material on K8s for Alpine. This guide is the result of my first pass and the incorporations of high quality notes from the contributers. Kubernetes &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;unicorn&amp;quot;&amp;gt;🦄&amp;lt;/span&amp;gt; is awesome.&lt;br /&gt;
&lt;br /&gt;
== Contributers ==&lt;br /&gt;
&lt;br /&gt;
* Matthew Rogers [https://github.com/RamboRogers Github] [https://www.linkedin.com/in/matthewrogerscissp/ LinkedIn]&lt;br /&gt;
* Mike Zolla [https://github.com/Zolla-Zolla Github] [https://www.linkedin.com/in/mike-zolla-5903b8/ LinkedIn]&lt;br /&gt;
* Matthew Emmett [https://github.com/mattemmett Github] [https://www.linkedin.com/in/mattemmett/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
= Build K8s on Alpine Linux &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;evergreen_tree&amp;quot;&amp;gt;🌲&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;mag&amp;quot;&amp;gt;🔍&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
You need an [https://alpinelinux.org/ Alpine Linux] install (this guide is written against version 3.17 standard image) with internet access. I recommend at least 2 CPU with 4GB of ram and 10GB of disk for each node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;For HA control planes you&#039;ll need a mininum of three nodes&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1. Setup the Repositories &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;green_book&amp;quot;&amp;gt;📗&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Update you repositories under /etc/apk/repositories to include community, edge community and testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#/media/cdrom/apks&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/v3.17/main&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/v3.17/community&lt;br /&gt;
#http://dl-cdn.alpinelinux.org/alpine/edge/main&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/edge/community&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/edge/testing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== 2. Node Setup &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;desktop_computer&amp;quot;&amp;gt;🖥️&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This series of commands solves a series is incremental problems and sets up the system (if the first control node) for kubectl/kubeadm to run properly on next login by linking the config.&lt;br /&gt;
&lt;br /&gt;
The result here gives you a functional node that can be joined to an existing cluster or can become the first control plane of a new cluster. &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;notes&amp;quot;&amp;gt;🎶&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|&amp;lt;span class{{=}}&amp;quot;emoji&amp;quot; data-emoji{{=}}&amp;quot;bell&amp;quot;&amp;gt;🔔&amp;lt;/span&amp;gt; This build assumes CNI usage of flannel for networking &amp;lt;span class{{=}}&amp;quot;emoji&amp;quot; data-emoji{{=}}&amp;quot;bell&amp;quot;&amp;gt;🔔&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Add kernel module for networking stuff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# echo &amp;quot;br_netfilter&amp;quot; &amp;gt; /etc/modules-load.d/k8s.conf&lt;br /&gt;
&amp;amp;#35; modprobe br_netfilter&lt;br /&gt;
&amp;amp;#35; echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|cni-plugin-flannel}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|cni-plugins}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|flannel}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|flannel-contrib-cni}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|kubelet}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|kubeadm}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|kubectl}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|containerd}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|uuidgen}}&lt;br /&gt;
&amp;amp;#35; apk add {{Pkg|nfs-utils}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Get rid of swap&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# cat /etc/fstab | grep -v swap &amp;gt; temp.fstab&lt;br /&gt;
&amp;amp;#35; cat temp.fstab &amp;gt; /etc/fstab&lt;br /&gt;
&amp;amp;#35; rm temp.fstab&lt;br /&gt;
&amp;amp;#35; swapoff -a}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fix prometheus errors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mount --make-rshared /&lt;br /&gt;
# echo &amp;quot;#!/bin/sh&amp;quot; &amp;gt; /etc/local.d/sharemetrics.start&lt;br /&gt;
# echo &amp;quot;mount --make-rshared /&amp;quot; &amp;gt;&amp;gt; /etc/local.d/sharemetrics.start&lt;br /&gt;
# chmod +x /etc/local.d/sharemetrics.start&lt;br /&gt;
# rc-update add local}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fix id error messages&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# uuidgen &amp;gt; /etc/machine-id}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Add services&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add containerd&lt;br /&gt;
&amp;amp;#35; rc-update add kubelet}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sync time&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add ntpd&lt;br /&gt;
&amp;amp;#35; /etc/init.d/ntpd start&lt;br /&gt;
&amp;amp;#35; /etc/init.d/containerd start}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fix flannel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# ln -s /usr/libexec/cni/flannel-amd64 /usr/libexec/cni/flannel}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kernel stuff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# echo &amp;quot;net.bridge.bridge-nf-call-iptables{{=}}1&amp;quot; &amp;gt;&amp;gt; /etc/sysctl.conf&lt;br /&gt;
&amp;amp;#35; sysctl net.bridge.bridge-nf-call-iptables{{=}}1}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pin your versions!&#039;&#039;&#039;  If you update and the nodes get out of sync, it implodes.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add &#039;kubelet{{=}}~1.26&#039;&lt;br /&gt;
&amp;amp;#35; apk add &#039;kubeadm{{=}}~1.26&#039;&lt;br /&gt;
&amp;amp;#35; apk add &#039;kubectl{{=}}~1.26&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|In the future you will manually have to add a newer version the same way to upgrade.}}&lt;br /&gt;
&lt;br /&gt;
Your blank node is now ready! If it&#039;s the first, you&#039;ll want to make a control node.&lt;br /&gt;
&lt;br /&gt;
=== 3. Setup the Control Plane (New Cluster!) &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;mechanical_arm&amp;quot;&amp;gt;🦾&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Run this command to start the cluster and then apply a network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#do not change subnet&lt;br /&gt;
kubeadm init --pod-network-cidr=10.244.0.0/16 --node-name=$(hostname)&lt;br /&gt;
mkdir ~/.kube&lt;br /&gt;
ln -s /etc/kubernetes/admin.conf /root/.kube/config&lt;br /&gt;
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You now have a control plane. This also gives you the command to run on our blank nodes to add them to this cluster as workers.&lt;br /&gt;
&lt;br /&gt;
=== 4. Join the cluster. &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;ant&amp;quot;&amp;gt;🐜&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Run this to get the join command from the control plane which you would then run on your new worker.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kubeadm token create --print-join-command &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bonus &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;moneybag&amp;quot;&amp;gt;💰&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
== Setup NFS Mounts on K8s ==&lt;br /&gt;
&lt;br /&gt;
This can be shared NFS storage to allow for auto persistent claim fulfilment. You&#039;ll need your IP updated and export information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/&lt;br /&gt;
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \&lt;br /&gt;
    --set nfs.server=192.168.1.31 \&lt;br /&gt;
    --set nfs.path=/exports/cluster00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now set the default storage class for the cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;kubectl get storageclass&lt;br /&gt;
kubectl patch storageclass nfs-client -p &#039;{&amp;amp;quot;metadata&amp;amp;quot;: {&amp;amp;quot;annotations&amp;amp;quot;:{&amp;amp;quot;storageclass.kubernetes.io/is-default-class&amp;amp;quot;:&amp;amp;quot;true&amp;amp;quot;}}}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Check on System &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;eyes&amp;quot;&amp;gt;👀&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Check on your system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;kubectl get nodes&lt;br /&gt;
kubectl get all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=K8s&amp;diff=23523</id>
		<title>K8s</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=K8s&amp;diff=23523"/>
		<updated>2023-05-26T20:50:30Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* Prerequisits 🔍 */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Alpine Linux &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;evergreen_tree&amp;quot;&amp;gt;🌲&amp;lt;/span&amp;gt; K8s in 10 Minutes =&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
This guide will allow you to deploy a fresh Alpine Linux install into a Kubernetes K8 cluster in less than 10 minutes.&lt;br /&gt;
&lt;br /&gt;
== Why &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;sparkles&amp;quot;&amp;gt;✨&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
I went to learn Kubernetes recently and I built a k3 cluster using Alpine in an hour or so, it was a great experience. I figured the next step would be K8s, but I found no material on K8s for Alpine. This guide is the result of my first pass and the incorporations of high quality notes from the contributers. Kubernetes &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;unicorn&amp;quot;&amp;gt;🦄&amp;lt;/span&amp;gt; is awesome.&lt;br /&gt;
&lt;br /&gt;
== Contributers ==&lt;br /&gt;
&lt;br /&gt;
* Matthew Rogers [https://github.com/RamboRogers Github] [https://www.linkedin.com/in/matthewrogerscissp/ LinkedIn]&lt;br /&gt;
* Mike Zolla [https://github.com/Zolla-Zolla Github] [https://www.linkedin.com/in/mike-zolla-5903b8/ LinkedIn]&lt;br /&gt;
* Matthew Emmett [https://github.com/mattemmett Github] [https://www.linkedin.com/in/mattemmett/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
= Build K8s on Alpine Linux &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;evergreen_tree&amp;quot;&amp;gt;🌲&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;mag&amp;quot;&amp;gt;🔍&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
You need an [https://alpinelinux.org/ Alpine Linux] install (this guide is written against version 3.17 standard image) with internet access. I recommend at least 2 CPU with 4GB of ram and 10GB of disk for each node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;For HA control planes you&#039;ll need a mininum of three nodes&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1. Setup the Repositories &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;green_book&amp;quot;&amp;gt;📗&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Update you repositories under /etc/apk/repositories to include community, edge community and testing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#/media/cdrom/apks&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/v3.17/main&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/v3.17/community&lt;br /&gt;
#http://dl-cdn.alpinelinux.org/alpine/edge/main&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/edge/community&lt;br /&gt;
http://dl-cdn.alpinelinux.org/alpine/edge/testing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== 2. Node Setup &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;desktop_computer&amp;quot;&amp;gt;🖥️&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This series of commands solves a series is incremental problems and sets up the system (if the first control node) for kubectl/kubeadm to run properly on next login by linking the config.&lt;br /&gt;
&lt;br /&gt;
The result here gives you a functional node that can be joined to an existing cluster or can become the first control plane of a new cluster. &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;notes&amp;quot;&amp;gt;🎶&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;*** &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;bell&amp;quot;&amp;gt;🔔&amp;lt;/span&amp;gt; This build assumes CNI usage of flannel for networking &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;bell&amp;quot;&amp;gt;🔔&amp;lt;/span&amp;gt; ***&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#add kernel module for networking stuff&lt;br /&gt;
echo &amp;quot;br_netfilter&amp;quot; &amp;gt; /etc/modules-load.d/k8s.conf&lt;br /&gt;
modprobe br_netfilter&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
apk add cni-plugin-flannel&lt;br /&gt;
apk add cni-plugins&lt;br /&gt;
apk add flannel&lt;br /&gt;
apk add flannel-contrib-cni&lt;br /&gt;
apk add kubelet&lt;br /&gt;
apk add kubeadm&lt;br /&gt;
apk add kubectl&lt;br /&gt;
apk add containerd&lt;br /&gt;
apk add uuidgen&lt;br /&gt;
apk add nfs-utils&lt;br /&gt;
#get rid of swap&lt;br /&gt;
cat /etc/fstab | grep -v swap &amp;gt; temp.fstab&lt;br /&gt;
cat temp.fstab &amp;gt; /etc/fstab&lt;br /&gt;
rm temp.fstab&lt;br /&gt;
swapoff -a&lt;br /&gt;
#Fix prometheus errors&lt;br /&gt;
mount --make-rshared /&lt;br /&gt;
echo &amp;quot;#!/bin/sh&amp;quot; &amp;gt; /etc/local.d/sharemetrics.start&lt;br /&gt;
echo &amp;quot;mount --make-rshared /&amp;quot; &amp;gt;&amp;gt; /etc/local.d/sharemetrics.start&lt;br /&gt;
chmod +x /etc/local.d/sharemetrics.start&lt;br /&gt;
rc-update add local&lt;br /&gt;
#Fix id error messages&lt;br /&gt;
uuidgen &amp;gt; /etc/machine-id&lt;br /&gt;
#Add services&lt;br /&gt;
rc-update add containerd&lt;br /&gt;
rc-update add kubelet&lt;br /&gt;
#Sync time&lt;br /&gt;
rc-update add ntpd&lt;br /&gt;
/etc/init.d/ntpd start&lt;br /&gt;
/etc/init.d/containerd start&lt;br /&gt;
#fix flannel&lt;br /&gt;
ln -s /usr/libexec/cni/flannel-amd64 /usr/libexec/cni/flannel&lt;br /&gt;
#kernel stuff&lt;br /&gt;
echo &amp;quot;net.bridge.bridge-nf-call-iptables=1&amp;quot; &amp;gt;&amp;gt; /etc/sysctl.conf&lt;br /&gt;
sysctl net.bridge.bridge-nf-call-iptables=1&lt;br /&gt;
#Pin your versions!  If you update and the nodes get out of sync, it implodes.&lt;br /&gt;
apk add &#039;kubelet=~1.26&#039;&lt;br /&gt;
apk add &#039;kubeadm=~1.26&#039;&lt;br /&gt;
apk add &#039;kubectl=~1.26&#039;&lt;br /&gt;
#Note that in the future you will manually have to add a newer version the same way to upgrade.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Your blank node is now ready! If it&#039;s the first, you&#039;ll want to make a control node.&lt;br /&gt;
&lt;br /&gt;
=== 3. Setup the Control Plane (New Cluster!) &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;mechanical_arm&amp;quot;&amp;gt;🦾&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Run this command to start the cluster and then apply a network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#do not change subnet&lt;br /&gt;
kubeadm init --pod-network-cidr=10.244.0.0/16 --node-name=$(hostname)&lt;br /&gt;
mkdir ~/.kube&lt;br /&gt;
ln -s /etc/kubernetes/admin.conf /root/.kube/config&lt;br /&gt;
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You now have a control plane. This also gives you the command to run on our blank nodes to add them to this cluster as workers.&lt;br /&gt;
&lt;br /&gt;
=== 4. Join the cluster. &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;ant&amp;quot;&amp;gt;🐜&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Run this to get the join command from the control plane which you would then run on your new worker.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kubeadm token create --print-join-command &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bonus &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;moneybag&amp;quot;&amp;gt;💰&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
== Setup NFS Mounts on K8s ==&lt;br /&gt;
&lt;br /&gt;
This can be shared NFS storage to allow for auto persistent claim fulfilment. You&#039;ll need your IP updated and export information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/&lt;br /&gt;
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \&lt;br /&gt;
    --set nfs.server=192.168.1.31 \&lt;br /&gt;
    --set nfs.path=/exports/cluster00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now set the default storage class for the cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;kubectl get storageclass&lt;br /&gt;
kubectl patch storageclass nfs-client -p &#039;{&amp;amp;quot;metadata&amp;amp;quot;: {&amp;amp;quot;annotations&amp;amp;quot;:{&amp;amp;quot;storageclass.kubernetes.io/is-default-class&amp;amp;quot;:&amp;amp;quot;true&amp;amp;quot;}}}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Check on System &amp;lt;span class=&amp;quot;emoji&amp;quot; data-emoji=&amp;quot;eyes&amp;quot;&amp;gt;👀&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Check on your system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;kubectl get nodes&lt;br /&gt;
kubectl get all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_run_Spice_Agent&amp;diff=23522</id>
		<title>How to run Spice Agent</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_run_Spice_Agent&amp;diff=23522"/>
		<updated>2023-05-26T20:43:44Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: added category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=How To Run Spice Agent in Alpine=&lt;br /&gt;
&lt;br /&gt;
This is a guide on how to run Spice Agent in Alpine Linux 3.12.1-standard. &lt;br /&gt;
&lt;br /&gt;
The Spice Agent can be used to get some additional features when running Alpine Linux in a Qemu/Libvirt VM.&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
Working:&lt;br /&gt;
* Client mouse mode&lt;br /&gt;
* Automatic adjustment of the X-session resolution&lt;br /&gt;
* Clipboard sharing&lt;br /&gt;
&lt;br /&gt;
Not working:&lt;br /&gt;
* The &amp;lt;code&amp;gt;State&amp;lt;/code&amp;gt; field in Libvirt - it always shows &amp;quot;disconnected&amp;quot;, even when it is working&lt;br /&gt;
&lt;br /&gt;
Not tested:&lt;br /&gt;
* Transferring files&lt;br /&gt;
* Multiple displays/screens&lt;br /&gt;
&lt;br /&gt;
=Before You Start=&lt;br /&gt;
Most features of the Spice Agent are only useful when running a graphical interface.&lt;br /&gt;
I roughly followed the [[AwesomeWM]] guide, but substituted &amp;lt;code&amp;gt;awesome&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;i3wm&amp;lt;/code&amp;gt; as that has my preference (you have to install {{Pkg|i3status}} manually, and use &amp;lt;code&amp;gt;i3&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;.xinitrc&amp;lt;/code&amp;gt; file).&lt;br /&gt;
&lt;br /&gt;
For the Spice Agent to work, don&#039;t remove the &amp;lt;code&amp;gt;Channel spice&amp;lt;/code&amp;gt; that is automatically added by Libvirt.&lt;br /&gt;
&lt;br /&gt;
=Building the Spice Agent=&lt;br /&gt;
Install the dependencies:&lt;br /&gt;
  # apk add alpine-sdk autoconf automake glib-dev libxfixes-dev libxrandr-dev libxinerama-dev spice-protocol alsa-lib-dev dbus-dev libdrm-dev libpciaccess-dev&lt;br /&gt;
&lt;br /&gt;
Get the source code:&lt;br /&gt;
  $ git clone https://gitlab.freedesktop.org/spice/linux/vd_agent.git&lt;br /&gt;
  $ cd vd_agent&lt;br /&gt;
  $ git checkout spice-vdagent-0.20.0&lt;br /&gt;
We need this specific version because the newest version requires a newer &amp;lt;code&amp;gt;spice-protocol&amp;lt;/code&amp;gt; version than is provided by the repositories (version 0.14.1). If you follow this guide with a later version of Alpine, you may want to get a newer version from git as well.&lt;br /&gt;
&lt;br /&gt;
Build the code (still in the {{Path|vd_agent}} directory):&lt;br /&gt;
  $ ./autogen.sh&lt;br /&gt;
  $ make&lt;br /&gt;
&lt;br /&gt;
Install the program (should be optional when running manually, but I haven&#039;t tried it without yet):&lt;br /&gt;
  # make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Running the Spice Agent=&lt;br /&gt;
&lt;br /&gt;
==Running manually==&lt;br /&gt;
First start the &amp;lt;code&amp;gt;spice-vdagentd&amp;lt;/code&amp;gt;:&lt;br /&gt;
  # modprobe uinput&lt;br /&gt;
  # mkdir /run/spice-vdagentd&lt;br /&gt;
  # spice-vdagentd -d -x -X&lt;br /&gt;
&amp;lt;small&amp;gt;You can also remove the lower-case &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; flag to deamonize the &amp;lt;code&amp;gt;spice-vdagentd&amp;lt;/code&amp;gt;.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then start the &amp;lt;code&amp;gt;spice-vdagent&amp;lt;/code&amp;gt;:&lt;br /&gt;
  $ spice-vdagent -x -d&lt;br /&gt;
Notice that there is no need to run this last command as root.&lt;br /&gt;
&lt;br /&gt;
==Running with init script==&lt;br /&gt;
&#039;&#039;This assumes you ran &amp;lt;code&amp;gt;make install&amp;lt;/code&amp;gt; at the end of building. If you have not, you&#039;ll have to change this accordingly. It also requires that &amp;lt;code&amp;gt;uinput&amp;lt;/code&amp;gt; can be loaded with &amp;lt;code&amp;gt;modprobe&amp;lt;/code&amp;gt;. If you cannot, look at [[#Using_the_virt_edition_of_Alpine]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To run with an init script, we will use the Gentoo init script, although we have to change the paths to make it work properly (latest commit is &amp;lt;code&amp;gt;b3b3e1d9a13c389f17e01c78c6c1a996d08420b5&amp;lt;/code&amp;gt; at the time of writing):&lt;br /&gt;
  $ wget https://gitweb.gentoo.org/repo/gentoo.git/plain/app-emulation/spice-vdagent/files/spice-vdagent.initd-4&lt;br /&gt;
  $ sed &#039;s,/var/run,/run,g;s,/usr/sbin,/usr/local/sbin,g&#039; spice-vdagent.initd-4 &amp;gt; spice-vdagentd&lt;br /&gt;
Then we move the file to the right location, change the ownership, make it executable and add it to the default runlevel:&lt;br /&gt;
  # mv spice-vdagentd /etc/init.d/&lt;br /&gt;
  # chown root:root /etc/init.d/spice-vdagentd&lt;br /&gt;
  # chmod +x /etc/init.d/spice-vdagentd&lt;br /&gt;
  # rc-update add spice-vdagentd default&lt;br /&gt;
&lt;br /&gt;
The above will start the &amp;lt;code&amp;gt;spice-vdagentd&amp;lt;/code&amp;gt;, but not the &amp;lt;code&amp;gt;spice-vdagent&amp;lt;/code&amp;gt;. As the &amp;lt;code&amp;gt;spice-vdagent&amp;lt;/code&amp;gt; should be started with the de/wm you&#039;re using, there is not one general way which works for all setups. If you want to find a way that works for you, [https://wiki.archlinux.org/index.php/Autostarting#On_desktop_environment_startup the Arch wiki has a decent page on autostarting].&lt;br /&gt;
&lt;br /&gt;
=Using the virt edition of Alpine=&lt;br /&gt;
This currently does not work on the virt edition (version 3.12.1), as it doesn&#039;t have &amp;lt;code&amp;gt;uinput&amp;lt;/code&amp;gt; enabled in the kernel. However, there are still several ways to get it working.&lt;br /&gt;
&lt;br /&gt;
==Run without uinput==&lt;br /&gt;
You can make the &amp;lt;code&amp;gt;spice-vdagentd&amp;lt;/code&amp;gt; work without the uinput module by starting it as follows, but it will disable the cursor while the &amp;lt;code&amp;gt;spice-vdagent&amp;lt;/code&amp;gt; is running:&lt;br /&gt;
  # mkdir /run/spice-vdagentd&lt;br /&gt;
  # spice-vdagentd -d -x -X -u /dev/null -f&lt;br /&gt;
&lt;br /&gt;
==Build uinput as module==&lt;br /&gt;
{{Draft|The following contains all necessary information, but has to be rewritten to be more clear.}}&lt;br /&gt;
Follow the steps in [[Creating_an_Alpine_package#Setup_your_system_and_account|Setup your system and account for building packages]] and cd to the {{Path|aports/main/linux-lts}} directory.&lt;br /&gt;
Check that the kernel version you&#039;ve pulled is the same that you&#039;re running with &amp;lt;code&amp;gt;uname -r&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;head APKBUILD&amp;lt;/code&amp;gt;.&lt;br /&gt;
If they mismatch, checkout the aports branch that has the same kernel version.&lt;br /&gt;
If they are the same, continue with the following steps:&lt;br /&gt;
  $ abuild deps&lt;br /&gt;
  $ abuild fetch verify&lt;br /&gt;
  $ abuild unpack&lt;br /&gt;
  $ abuild prepare&lt;br /&gt;
  $ cd src/build-virt-x86_64&lt;br /&gt;
Now change &amp;lt;code&amp;gt;CONFIG_INPUT_UINPUT&amp;lt;/code&amp;gt; from not being included to &amp;lt;code&amp;gt;CONFIG_INPUT_UINPUT=m&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt; file. Then proceed as follows:&lt;br /&gt;
  $ make modules_prepare&lt;br /&gt;
  $ make drivers/input/misc/uinput.ko&lt;br /&gt;
This builds the &amp;lt;code&amp;gt;uinput&amp;lt;/code&amp;gt; module in the current directory. Every time you want to use it, you&#039;ll have to load it like this (still from {{Path|aports/main/linux-lts/src/build-virt-x86_64}}):&lt;br /&gt;
  # insmod drivers/input/misc/uinput.ko&lt;br /&gt;
After this, you can use the spice agent as described in [[How_to_run_Spice_Agent#Running_the_Spice_Agent|Running the Spice Agent]], except that the &amp;lt;code&amp;gt;modprobe uinput&amp;lt;/code&amp;gt; is not necessary.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can &amp;quot;install&amp;quot; the module by copying it to {{Path|/lib/modules/`uname -r`/extra}} (which you&#039;ll most likely have to create first) and running &amp;lt;code&amp;gt;depmod&amp;lt;/code&amp;gt; (as root).&lt;br /&gt;
After this, you can load the module normally with &amp;lt;code&amp;gt;modprobe uinput&amp;lt;/code&amp;gt;.&lt;br /&gt;
This is necessary if you want to use the init script as described in [[#Running_with_init_script]].&lt;br /&gt;
&lt;br /&gt;
==Rebuild the kernel to include uinput==&lt;br /&gt;
See [[Custom_Kernel]] for pointers on how to build a custom kernel. The option you&#039;ll need to change in the config is &amp;lt;code&amp;gt;CONFIG_INPUT_UINPUT&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Virtualization]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Awesome(wm)_Setup&amp;diff=23521</id>
		<title>Awesome(wm) Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Awesome(wm)_Setup&amp;diff=23521"/>
		<updated>2023-05-26T20:40:37Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[AwesomeWM]]&lt;br /&gt;
&lt;br /&gt;
{{Delete|Empty page, just a redirect}}&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_run_Spice_Agent&amp;diff=23520</id>
		<title>How to run Spice Agent</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_run_Spice_Agent&amp;diff=23520"/>
		<updated>2023-05-26T20:39:05Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: /* Before You Start */ update link to page instead of redirect, minor formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=How To Run Spice Agent in Alpine=&lt;br /&gt;
&lt;br /&gt;
This is a guide on how to run Spice Agent in Alpine Linux 3.12.1-standard. &lt;br /&gt;
&lt;br /&gt;
The Spice Agent can be used to get some additional features when running Alpine Linux in a Qemu/Libvirt VM.&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
Working:&lt;br /&gt;
* Client mouse mode&lt;br /&gt;
* Automatic adjustment of the X-session resolution&lt;br /&gt;
* Clipboard sharing&lt;br /&gt;
&lt;br /&gt;
Not working:&lt;br /&gt;
* The &amp;lt;code&amp;gt;State&amp;lt;/code&amp;gt; field in Libvirt - it always shows &amp;quot;disconnected&amp;quot;, even when it is working&lt;br /&gt;
&lt;br /&gt;
Not tested:&lt;br /&gt;
* Transferring files&lt;br /&gt;
* Multiple displays/screens&lt;br /&gt;
&lt;br /&gt;
=Before You Start=&lt;br /&gt;
Most features of the Spice Agent are only useful when running a graphical interface.&lt;br /&gt;
I roughly followed the [[AwesomeWM]] guide, but substituted &amp;lt;code&amp;gt;awesome&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;i3wm&amp;lt;/code&amp;gt; as that has my preference (you have to install {{Pkg|i3status}} manually, and use &amp;lt;code&amp;gt;i3&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;.xinitrc&amp;lt;/code&amp;gt; file).&lt;br /&gt;
&lt;br /&gt;
For the Spice Agent to work, don&#039;t remove the &amp;lt;code&amp;gt;Channel spice&amp;lt;/code&amp;gt; that is automatically added by Libvirt.&lt;br /&gt;
&lt;br /&gt;
=Building the Spice Agent=&lt;br /&gt;
Install the dependencies:&lt;br /&gt;
  # apk add alpine-sdk autoconf automake glib-dev libxfixes-dev libxrandr-dev libxinerama-dev spice-protocol alsa-lib-dev dbus-dev libdrm-dev libpciaccess-dev&lt;br /&gt;
&lt;br /&gt;
Get the source code:&lt;br /&gt;
  $ git clone https://gitlab.freedesktop.org/spice/linux/vd_agent.git&lt;br /&gt;
  $ cd vd_agent&lt;br /&gt;
  $ git checkout spice-vdagent-0.20.0&lt;br /&gt;
We need this specific version because the newest version requires a newer &amp;lt;code&amp;gt;spice-protocol&amp;lt;/code&amp;gt; version than is provided by the repositories (version 0.14.1). If you follow this guide with a later version of Alpine, you may want to get a newer version from git as well.&lt;br /&gt;
&lt;br /&gt;
Build the code (still in the {{Path|vd_agent}} directory):&lt;br /&gt;
  $ ./autogen.sh&lt;br /&gt;
  $ make&lt;br /&gt;
&lt;br /&gt;
Install the program (should be optional when running manually, but I haven&#039;t tried it without yet):&lt;br /&gt;
  # make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Running the Spice Agent=&lt;br /&gt;
&lt;br /&gt;
==Running manually==&lt;br /&gt;
First start the &amp;lt;code&amp;gt;spice-vdagentd&amp;lt;/code&amp;gt;:&lt;br /&gt;
  # modprobe uinput&lt;br /&gt;
  # mkdir /run/spice-vdagentd&lt;br /&gt;
  # spice-vdagentd -d -x -X&lt;br /&gt;
&amp;lt;small&amp;gt;You can also remove the lower-case &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; flag to deamonize the &amp;lt;code&amp;gt;spice-vdagentd&amp;lt;/code&amp;gt;.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then start the &amp;lt;code&amp;gt;spice-vdagent&amp;lt;/code&amp;gt;:&lt;br /&gt;
  $ spice-vdagent -x -d&lt;br /&gt;
Notice that there is no need to run this last command as root.&lt;br /&gt;
&lt;br /&gt;
==Running with init script==&lt;br /&gt;
&#039;&#039;This assumes you ran &amp;lt;code&amp;gt;make install&amp;lt;/code&amp;gt; at the end of building. If you have not, you&#039;ll have to change this accordingly. It also requires that &amp;lt;code&amp;gt;uinput&amp;lt;/code&amp;gt; can be loaded with &amp;lt;code&amp;gt;modprobe&amp;lt;/code&amp;gt;. If you cannot, look at [[#Using_the_virt_edition_of_Alpine]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To run with an init script, we will use the Gentoo init script, although we have to change the paths to make it work properly (latest commit is &amp;lt;code&amp;gt;b3b3e1d9a13c389f17e01c78c6c1a996d08420b5&amp;lt;/code&amp;gt; at the time of writing):&lt;br /&gt;
  $ wget https://gitweb.gentoo.org/repo/gentoo.git/plain/app-emulation/spice-vdagent/files/spice-vdagent.initd-4&lt;br /&gt;
  $ sed &#039;s,/var/run,/run,g;s,/usr/sbin,/usr/local/sbin,g&#039; spice-vdagent.initd-4 &amp;gt; spice-vdagentd&lt;br /&gt;
Then we move the file to the right location, change the ownership, make it executable and add it to the default runlevel:&lt;br /&gt;
  # mv spice-vdagentd /etc/init.d/&lt;br /&gt;
  # chown root:root /etc/init.d/spice-vdagentd&lt;br /&gt;
  # chmod +x /etc/init.d/spice-vdagentd&lt;br /&gt;
  # rc-update add spice-vdagentd default&lt;br /&gt;
&lt;br /&gt;
The above will start the &amp;lt;code&amp;gt;spice-vdagentd&amp;lt;/code&amp;gt;, but not the &amp;lt;code&amp;gt;spice-vdagent&amp;lt;/code&amp;gt;. As the &amp;lt;code&amp;gt;spice-vdagent&amp;lt;/code&amp;gt; should be started with the de/wm you&#039;re using, there is not one general way which works for all setups. If you want to find a way that works for you, [https://wiki.archlinux.org/index.php/Autostarting#On_desktop_environment_startup the Arch wiki has a decent page on autostarting].&lt;br /&gt;
&lt;br /&gt;
=Using the virt edition of Alpine=&lt;br /&gt;
This currently does not work on the virt edition (version 3.12.1), as it doesn&#039;t have &amp;lt;code&amp;gt;uinput&amp;lt;/code&amp;gt; enabled in the kernel. However, there are still several ways to get it working.&lt;br /&gt;
&lt;br /&gt;
==Run without uinput==&lt;br /&gt;
You can make the &amp;lt;code&amp;gt;spice-vdagentd&amp;lt;/code&amp;gt; work without the uinput module by starting it as follows, but it will disable the cursor while the &amp;lt;code&amp;gt;spice-vdagent&amp;lt;/code&amp;gt; is running:&lt;br /&gt;
  # mkdir /run/spice-vdagentd&lt;br /&gt;
  # spice-vdagentd -d -x -X -u /dev/null -f&lt;br /&gt;
&lt;br /&gt;
==Build uinput as module==&lt;br /&gt;
{{Draft|The following contains all necessary information, but has to be rewritten to be more clear.}}&lt;br /&gt;
Follow the steps in [[Creating_an_Alpine_package#Setup_your_system_and_account|Setup your system and account for building packages]] and cd to the {{Path|aports/main/linux-lts}} directory.&lt;br /&gt;
Check that the kernel version you&#039;ve pulled is the same that you&#039;re running with &amp;lt;code&amp;gt;uname -r&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;head APKBUILD&amp;lt;/code&amp;gt;.&lt;br /&gt;
If they mismatch, checkout the aports branch that has the same kernel version.&lt;br /&gt;
If they are the same, continue with the following steps:&lt;br /&gt;
  $ abuild deps&lt;br /&gt;
  $ abuild fetch verify&lt;br /&gt;
  $ abuild unpack&lt;br /&gt;
  $ abuild prepare&lt;br /&gt;
  $ cd src/build-virt-x86_64&lt;br /&gt;
Now change &amp;lt;code&amp;gt;CONFIG_INPUT_UINPUT&amp;lt;/code&amp;gt; from not being included to &amp;lt;code&amp;gt;CONFIG_INPUT_UINPUT=m&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt; file. Then proceed as follows:&lt;br /&gt;
  $ make modules_prepare&lt;br /&gt;
  $ make drivers/input/misc/uinput.ko&lt;br /&gt;
This builds the &amp;lt;code&amp;gt;uinput&amp;lt;/code&amp;gt; module in the current directory. Every time you want to use it, you&#039;ll have to load it like this (still from {{Path|aports/main/linux-lts/src/build-virt-x86_64}}):&lt;br /&gt;
  # insmod drivers/input/misc/uinput.ko&lt;br /&gt;
After this, you can use the spice agent as described in [[How_to_run_Spice_Agent#Running_the_Spice_Agent|Running the Spice Agent]], except that the &amp;lt;code&amp;gt;modprobe uinput&amp;lt;/code&amp;gt; is not necessary.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can &amp;quot;install&amp;quot; the module by copying it to {{Path|/lib/modules/`uname -r`/extra}} (which you&#039;ll most likely have to create first) and running &amp;lt;code&amp;gt;depmod&amp;lt;/code&amp;gt; (as root).&lt;br /&gt;
After this, you can load the module normally with &amp;lt;code&amp;gt;modprobe uinput&amp;lt;/code&amp;gt;.&lt;br /&gt;
This is necessary if you want to use the init script as described in [[#Running_with_init_script]].&lt;br /&gt;
&lt;br /&gt;
==Rebuild the kernel to include uinput==&lt;br /&gt;
See [[Custom_Kernel]] for pointers on how to build a custom kernel. The option you&#039;ll need to change in the config is &amp;lt;code&amp;gt;CONFIG_INPUT_UINPUT&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Awesome&amp;diff=23519</id>
		<title>Awesome</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Awesome&amp;diff=23519"/>
		<updated>2023-05-26T20:36:28Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[AwesomeWM]]&lt;br /&gt;
&lt;br /&gt;
{{Delete|just a redirect}}&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Setting_up_Transmission_(bittorrent)_with_Clutch_WebUI&amp;diff=23518</id>
		<title>Setting up Transmission (bittorrent) with Clutch WebUI</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Setting_up_Transmission_(bittorrent)_with_Clutch_WebUI&amp;diff=23518"/>
		<updated>2023-05-26T20:31:15Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: formatting and typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This document will show you how you can setup [https://transmissionbt.com/ Transmission BitTorrent] client on Alpine Linux and control it with a nice HTTP web-interface. It is assumed that you know the basics of Alpine Linux (package management and internals) and you have enough storage available for your downloaded media (i.e. USB hard drive) and, of course, a working internet connection.&lt;br /&gt;
&lt;br /&gt;
== Setting up Transmission ==&lt;br /&gt;
&lt;br /&gt;
Lets install it:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|transmission-daemon}}}}&lt;br /&gt;
&lt;br /&gt;
This should install latest available version of Transmission (available on Alpine). After the installation is complete you should have default configuration file for init in {{Path|/etc/conf.d/transmission-daemon}}.&lt;br /&gt;
&lt;br /&gt;
By default, Transmission will run as the user &#039;&#039;&#039;transmission&#039;&#039;&#039;. If you need to make changes, do so, and save them. You can restart &amp;lt;code&amp;gt;transmission-daemon&amp;lt;/code&amp;gt; and see if all is working as desired:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service transmission-daemon restart}}&lt;br /&gt;
&lt;br /&gt;
To configure the transmission settings (including the download location), edit the configuration file here: {{Path|/var/lib/transmission/config/settings.json}}&lt;br /&gt;
&lt;br /&gt;
If everything is working, you should see &amp;lt;code&amp;gt;transmission-daemon&amp;lt;/code&amp;gt; running with the following command:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ ps}}&lt;br /&gt;
&lt;br /&gt;
If you change the download location in the settings, remember to transfer ownership to the &#039;&#039;&#039;transmission&#039;&#039;&#039; user and group.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# chown -R transmission:transmission &amp;lt;DOWNLOAD_FOLDER&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
It may also be convenient for the &#039;&#039;&#039;root&#039;&#039;&#039; user to be able to access the files when administering the server. An easy way to do this is to add the root user to the &#039;&#039;&#039;transmission&#039;&#039;&#039; group:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# addgroup root transmission}}&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add &amp;lt;code&amp;gt;transmission&amp;lt;/code&amp;gt; to our system start:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add transmission-daemon}}&lt;br /&gt;
&lt;br /&gt;
The transmission web GUI will run on &amp;lt;code&amp;gt;http://&amp;lt;IP_ADDRESS&amp;gt;:9091/transmission&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Saving your changes to disk ==&lt;br /&gt;
&lt;br /&gt;
Now is a good time to write your changes to disk:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# lbu_commit device}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User_talk:Sb1&amp;diff=23510</id>
		<title>User talk:Sb1</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User_talk:Sb1&amp;diff=23510"/>
		<updated>2023-05-23T07:33:47Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: sig&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi,&lt;br /&gt;
I noticed your recent edits to Installation page made quite a development on an optional matter (&#039;&#039;&#039;headless config&#039;&#039;&#039;), that may still be of interest for many.&amp;lt;br&amp;gt;&lt;br /&gt;
I can see a few downsides on how it stands now:&lt;br /&gt;
* instructions for an &#039;&#039;optional thing&#039;&#039; are becoming very long (and yet incomplete)&lt;br /&gt;
* described method requires quite some familiarity with Alpine, whereas this guide is intended for new comers&lt;br /&gt;
* that solution has several pitfalls (it will transfer all same settings to any server installed with said apkovl, etc...)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure why a reference to a straightforward and working third-party solution is now removed from wiki.&amp;lt;br&amp;gt;&lt;br /&gt;
Wiki is not official doc, and any mention does not express endorsement: quality external references are just fine in wiki. Referring to &#039;&#039;backdoor&#039;&#039; is irrelevant on this topic: it is not a good place to state personal judgement.&amp;lt;br&amp;gt;&lt;br /&gt;
As for the longer option you describe, it may fit better into tutorial section where things could be detailed more.&lt;br /&gt;
&lt;br /&gt;
Would you reconsider the edits in that part? &lt;br /&gt;
&lt;br /&gt;
:We could add the link (https://github.com/macmpi/alpine-linux-headless-bootstrap) to the main [[Raspberry Pi]] page. [[User:Bbbhltz|bbbhltz]] ([[User talk:Bbbhltz|talk]]) 15:18, 20 May 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
::That third-party apkovl solution works on any Alpine platform it is not limited to Pi-thing: I&#039;ve been successfully using it on x86_64, x86,... So referring to it from main install page makes sense --[[User:Alpwik|Alpwik]] ([[User talk:Alpwik|talk]]) 15:07, 21 May 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
* That headless.apkovl has too many  security complaints filed, and unfortunately the author has not yet chosen to take the secure-defaults-first approach. The overlay makes users accept publicly shipped &amp;quot;private&amp;quot;(not) keys, by default, and continues starting that unsecured sshd root login server after an installation, by default. Obviously wrong things, but the issues that got filed are hidden as &amp;quot;closed&amp;quot; without actually fixing the wrong behavior. That was the reason for the link removal, to not have users directed to it, at least not without prominent warning. At the moment, sadly, instead of fixing the defaults, the github readme actually kind of hides the facts in in descriptive footnotes that do not mention the consequences. --[[User:Sb1|Sb1]]&lt;br /&gt;
: Ok, noted you are not happy with that solution, it&#039;s your own opinion. Please consider there are many different opinions out there (repo stars appreciations give some clues; you can discuss the topic there, etc...). This &#039;&#039;&#039;wiki is not a place for advocacy&#039;&#039;&#039;, revenge statement or frustration expression: this does not help users and make things very confusing. Please consider reverting your last changes. --[[User:Alpwik|Alpwik]] ([[User talk:Alpwik|talk]]) 06:23, 23 May 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Sorry both of you. It appears that I made a change on the page by accident. My son touched the keyboard when I wasn&#039;t looking. Please feel free to &amp;quot;undo&amp;quot; whatever I just change on the Installation page. [[User:Bbbhltz|bbbhltz]] ([[User talk:Bbbhltz|talk]]) 07:33, 23 May 2023 (UTC)&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User_talk:Sb1&amp;diff=23509</id>
		<title>User talk:Sb1</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User_talk:Sb1&amp;diff=23509"/>
		<updated>2023-05-23T07:33:32Z</updated>

		<summary type="html">&lt;p&gt;Bbbhltz: mea culpa&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi,&lt;br /&gt;
I noticed your recent edits to Installation page made quite a development on an optional matter (&#039;&#039;&#039;headless config&#039;&#039;&#039;), that may still be of interest for many.&amp;lt;br&amp;gt;&lt;br /&gt;
I can see a few downsides on how it stands now:&lt;br /&gt;
* instructions for an &#039;&#039;optional thing&#039;&#039; are becoming very long (and yet incomplete)&lt;br /&gt;
* described method requires quite some familiarity with Alpine, whereas this guide is intended for new comers&lt;br /&gt;
* that solution has several pitfalls (it will transfer all same settings to any server installed with said apkovl, etc...)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure why a reference to a straightforward and working third-party solution is now removed from wiki.&amp;lt;br&amp;gt;&lt;br /&gt;
Wiki is not official doc, and any mention does not express endorsement: quality external references are just fine in wiki. Referring to &#039;&#039;backdoor&#039;&#039; is irrelevant on this topic: it is not a good place to state personal judgement.&amp;lt;br&amp;gt;&lt;br /&gt;
As for the longer option you describe, it may fit better into tutorial section where things could be detailed more.&lt;br /&gt;
&lt;br /&gt;
Would you reconsider the edits in that part? &lt;br /&gt;
&lt;br /&gt;
:We could add the link (https://github.com/macmpi/alpine-linux-headless-bootstrap) to the main [[Raspberry Pi]] page. [[User:Bbbhltz|bbbhltz]] ([[User talk:Bbbhltz|talk]]) 15:18, 20 May 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
::That third-party apkovl solution works on any Alpine platform it is not limited to Pi-thing: I&#039;ve been successfully using it on x86_64, x86,... So referring to it from main install page makes sense --[[User:Alpwik|Alpwik]] ([[User talk:Alpwik|talk]]) 15:07, 21 May 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
* That headless.apkovl has too many  security complaints filed, and unfortunately the author has not yet chosen to take the secure-defaults-first approach. The overlay makes users accept publicly shipped &amp;quot;private&amp;quot;(not) keys, by default, and continues starting that unsecured sshd root login server after an installation, by default. Obviously wrong things, but the issues that got filed are hidden as &amp;quot;closed&amp;quot; without actually fixing the wrong behavior. That was the reason for the link removal, to not have users directed to it, at least not without prominent warning. At the moment, sadly, instead of fixing the defaults, the github readme actually kind of hides the facts in in descriptive footnotes that do not mention the consequences. --[[User:Sb1|Sb1]]&lt;br /&gt;
: Ok, noted you are not happy with that solution, it&#039;s your own opinion. Please consider there are many different opinions out there (repo stars appreciations give some clues; you can discuss the topic there, etc...). This &#039;&#039;&#039;wiki is not a place for advocacy&#039;&#039;&#039;, revenge statement or frustration expression: this does not help users and make things very confusing. Please consider reverting your last changes. --[[User:Alpwik|Alpwik]] ([[User talk:Alpwik|talk]]) 06:23, 23 May 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Sorry both of you. It appears that I made a change on the page by accident. My son touched the keyboard when I wasn&#039;t looking. Please feel free to &amp;quot;undo&amp;quot; whatever I just change on the Installation page.&lt;/div&gt;</summary>
		<author><name>Bbbhltz</name></author>
	</entry>
</feed>