<?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=Junialter</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=Junialter"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Junialter"/>
	<updated>2026-04-25T19:30:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=FTP&amp;diff=18062</id>
		<title>FTP</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=FTP&amp;diff=18062"/>
		<updated>2020-09-11T18:30:20Z</updated>

		<summary type="html">&lt;p&gt;Junialter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;FTP&amp;quot; means &#039;&#039;&#039;File Transfer Protocol&#039;&#039;&#039; one of the older file transfers protocols used over TCP/IP infrastructure, has a client/service philosophy (it needs a listening server and users are clients to make requests for files).&lt;br /&gt;
&lt;br /&gt;
About FTP software Alpine Linux has only the right solutions packaged:&lt;br /&gt;
&lt;br /&gt;
* The most secure and fasted FTP server as {{Pkg|vsftpd}} for the service part if you plan to install a FTP service on Alpine servers&lt;br /&gt;
* The most profiling and perfect client as {{Pkg|ncftp}} and also {{Pkg|lftp}} for the client part if you dessire to use at the command line&lt;br /&gt;
* Also you can use {{Pkg|pcmanfm}} with {{Pkg|gvfs}} plugins to handle ftp request too&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In this document we will show you general information about FTP software related to Alpine linux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= The FTP service: vsftpd =&lt;br /&gt;
&lt;br /&gt;
As alpine linux (simple, secure and eficientely) the provided FTP service software are {{Pkg|vsftpd}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|vsftpd}} are not so used due common hosting panels does not handle it&#039;s configurations management.. in contrash {{Pkg|vsftpd}} are secured respect rest of others without so much updates.&lt;br /&gt;
&lt;br /&gt;
=== FTP server: About vsftpd package ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;It was the most secured FTP server&#039;&#039;&#039;.  It is the default FTP server in the NimbleX and Slackware Linux distributions and many others.&lt;br /&gt;
&lt;br /&gt;
{{Note|As for minimal FTP&#039;s and fast server purposes are very recommended due it easy configuration process and perfect performance without much configuration.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Feature/Artifac !! Value/Name !! Observations&lt;br /&gt;
|-&lt;br /&gt;
| Main package name || vsftpd || &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apk add vsftpd&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Manpages and DOCs packages || vsftpd-doc || &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apk add vsftpd-doc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Configuration file || {{Path|/etc/vsftpd/vsftpd.conf}} || It&#039;s not close to alpine, just vanilla provived!&lt;br /&gt;
|-&lt;br /&gt;
| Default place for files || {{Path|/var/lib/ftp}} || cos anonnimous are default, is home for daemon user&lt;br /&gt;
|-&lt;br /&gt;
| Log files (error, access, etc) || {{Path|/var/log/vsftpd.log}} || Defined in vsftp.conf also&lt;br /&gt;
|-&lt;br /&gt;
| User running the service || vsftpd || Others Linux used &amp;quot;ftp&amp;quot; alpine has as a group&lt;br /&gt;
|-&lt;br /&gt;
| Group to common to || vsftpd || Used to share things amont others daemons or services, like redis or apache files&lt;br /&gt;
|-&lt;br /&gt;
| Programed on || C || Main engine code in C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Important Limitations ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No SFTP support, BUT &#039;&#039;has support for FTPS&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Install vsftpd ===&lt;br /&gt;
&lt;br /&gt;
The installation does not work out of the box, cos enable by default anonimous and ipv4 only.&lt;br /&gt;
&lt;br /&gt;
Per user ftp files can be supported by special directive in the vsftp.conf file using &amp;lt;code&amp;gt;user_sub_token&amp;lt;/code&amp;gt; to somethign like {{Path|/home/$USER/public_ftp}} directory by example if we enable it (process are described below in further section &amp;quot;vsftpd configuration&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{Pkg|vsftd}} is available in the Alpine Linux repositories. To install, simple launch the commands below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
apk add vsftpd&lt;br /&gt;
&lt;br /&gt;
rc-update add vsftpd default&lt;br /&gt;
&lt;br /&gt;
rc-service vsftpd restart&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== vsftpd Configuration ===&lt;br /&gt;
&lt;br /&gt;
By default alpine vsftpd package does not provide any special configuration, just vanilla provided so we must specify what we want!&lt;br /&gt;
&lt;br /&gt;
Configurations depends of the purpose of the FTP nature to serve, the most common cases are anonymously ftp service, user system ftp service and virtual users ftp service.. &lt;br /&gt;
&lt;br /&gt;
For production purposes the [[Production FTP virtual users: vsftpd + MySQL]] wiki page will explain in details all the needs for a virtual users case, there&#039;s the [[Production FTP user service: vsftpd]] wiki page with futher information to use with system users and lets encrypt certificates.&lt;br /&gt;
&lt;br /&gt;
Due to the minimalism of alpine linux, &#039;&#039;&#039;unfortunately the vsftpd packaging only provided vanilla configurations not close to alpine or easy admin maintenance&#039;&#039;&#039;, see the [[Production VSFTP system: vsftpd + MySQL + SFTP]] wiki page to goin in deep about configuring lighttpd web server.&lt;br /&gt;
&lt;br /&gt;
==== Controlling vsftpd ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Start vsftpd&#039;&#039;&#039;&#039;&#039;: After the installation {{Pkg|vsftpd}} is not running. As we said in first section, was started already but if you want to start {{Pkg|vsftpd}} manually use:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|rc-service vsftpd start}}&lt;br /&gt;
&lt;br /&gt;
You will get a feedback about the status.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * Caching service dependencies ...                           [ ok ]&lt;br /&gt;
 * Starting vsftpd...                                         [ ok ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Stop vsftpd&#039;&#039;&#039;&#039;&#039;: If you want to stop the web server use &#039;&#039;stop&#039;&#039; in the same way of previous command:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|rc-service vsftpd stop}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Restart lighttpd&#039;&#039;&#039;&#039;&#039;: After changing the configuration file lighttpd needs to be restarted.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|rc-service vsftpd restart}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Proper Runlevel&#039;&#039;&#039;&#039;&#039;: By default no services are added to start process, sysadmin must know what we want and what will services do, also other main reason are due in dockers there&#039;s no runlevels per se and Alpine linux are mostly used in dockers containers. You must added the servide only to the default runlevel, not to boot, because need networking activated&lt;br /&gt;
&lt;br /&gt;
{{Cmd|rc-update add vsftpd default}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Testing vsftpd ===&lt;br /&gt;
&lt;br /&gt;
This section is assuming that vsftpd is running. Well, at the moment there is no user ftp allowed available but the server is up and running.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|nc -zv 127.0.0.1 21}}&lt;br /&gt;
&lt;br /&gt;
Note that we used &amp;quot;127.0.0.1&amp;quot; if you are using alpine as the only machine for all as your main desktop/pc/machine.&lt;br /&gt;
&lt;br /&gt;
If you are using alpine remotelly as web server and just install it the package, chnage &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;127.0.0.1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; with ip of the alpine machine. The &amp;quot;webserveripaddres&amp;quot; are the ip address of your setup/server machine.&lt;br /&gt;
&lt;br /&gt;
The common response will be &#039;&#039;&#039;OPEN&#039;&#039;&#039; if server are running.&lt;br /&gt;
&lt;br /&gt;
=== See also about vsftpd ===&lt;br /&gt;
&lt;br /&gt;
* [[Production Lets Encrypt: dehydrated]]&lt;br /&gt;
* [[Production FTP user service: vsftpd]]&lt;br /&gt;
* [[Production FTP virtual users: vsftpd + MySQL]]&lt;br /&gt;
* [[Production VSFTP system: vsftpd + MySQL + SFTP]]&lt;br /&gt;
* [[Alpine newbie developer]]&lt;br /&gt;
* [[Alpine newbie lammers]]&lt;br /&gt;
&lt;br /&gt;
= The FTP clients: lftp, pcmanfm and ncftp =&lt;br /&gt;
&lt;br /&gt;
The FTP protocol need also a client support to property used. Alpine Linux provides two packages for command line and batch procesing of FTP protocol, apart of the {{Pkg|firefox}} package: the {{Pkg|lftp}} and the {{Pkg|ncftp}} packages.&lt;br /&gt;
&lt;br /&gt;
* Gui programs:&lt;br /&gt;
** {{Pkg|pcmanfm}} check [[#Gui_FTP_client:_About_pcmanfm_package]]&lt;br /&gt;
** {{Pkg|firefox}}&lt;br /&gt;
* Cli programs:&lt;br /&gt;
** {{Pkg|lftp}} check [[#Cli_FTP_client:_About_lftp_package]]&lt;br /&gt;
** {{Pkg|ncftp}}&lt;br /&gt;
&lt;br /&gt;
So then, &#039;&#039;&#039;commonly a web browser (firefox) supports FTP protocol&#039;&#039;&#039; so our FTP server just configured can be &#039;&#039;&#039;browsed using the address &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ftp://&amp;lt;webserveripaddres&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; The &amp;quot;webserveripaddres&amp;quot; are the ip address of your setup/server machine.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Cli FTP client: About lftp package ==&lt;br /&gt;
&lt;br /&gt;
LFTP is a sophisticated file transfer program supporting a number of network protocols (ftp, http, sftp, fish, torrent). &lt;br /&gt;
&lt;br /&gt;
* Has job control and..&lt;br /&gt;
* uses the readline library for input. &lt;br /&gt;
* It has bookmarks, &lt;br /&gt;
* Has built-in mirror command&lt;br /&gt;
* Can transfer several files in parallel.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Feature/Artifac !! Value/Name !! Observations&lt;br /&gt;
|-&lt;br /&gt;
| Main package name || lftp || &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apk add lftp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Manpages and DOCs packages || vsftpd-doc || &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apk add lftp-doc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Configuration file (system) || {{Path|/etc/lftp.conf}} || It&#039;s not close to alpine, just vanilla provived!&lt;br /&gt;
|-&lt;br /&gt;
| Configuration file (user) || {{Path|~/.lftprc}} || if found the first to parse!&lt;br /&gt;
|-&lt;br /&gt;
| Configuration file (user) || {{Path|~/.lftp/rc}} || second attempt to parse if first not found!&lt;br /&gt;
|-&lt;br /&gt;
| Programed on || C || Main engine code in C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Installing lftp ===&lt;br /&gt;
&lt;br /&gt;
Is provided in main repository since 3.6, so &#039;&#039;&#039;is a team supported package ready for production&#039;&#039;&#039; deploys.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
apk add lftp&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring lftp ===&lt;br /&gt;
&lt;br /&gt;
The main configuration file, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;/etc/lftp.conf&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; comes with various examples and comments. On startup, lftp executes &amp;lt;code&amp;gt;/etc/lftp.conf&amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt;~/.lftprc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;~/.lftp/rc&amp;lt;/code&amp;gt;. You can use those files to set system-wide and user-specific settings.&lt;br /&gt;
&lt;br /&gt;
In your configuration file, simply use the command set followed by the name of the setting, followed by its value. Use on/off for boolean values. Check this example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
set ftp:ssl-force on&lt;br /&gt;
set ssl:verify-certificate on&lt;br /&gt;
set ftp:use-feat off&lt;br /&gt;
set ftp:ssl-protect-data on&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set specific settings for specific servers only. Simply append a slash (/) and the server name to the setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
set ftp:use-feat off /example.com&lt;br /&gt;
set ftp:ssl-force on /example.com&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|The closure for `dns:&#039;, `net:&#039;, `ftp:&#039;, `http:&#039;, `hftp:&#039; domain variables is currently just the host name as you specify it in the `open&#039; command (with some exceptions where closure is meaningless, e.g. dns:cache-size). For some `cmd:&#039; domain variables the closure is current URL without path. For other variables it is not currently used. See examples in the sample lftp.conf.}}&lt;br /&gt;
&lt;br /&gt;
=== General lftp usage examples ===&lt;br /&gt;
&lt;br /&gt;
By default, lftp is silent about the operations it performs in the background. If you need some more output, e.g. for debugging purposes, you can use the &#039;debug&#039; command (without the &#039;set&#039; command):&lt;br /&gt;
&lt;br /&gt;
* debug 5 will display the full debug output.&lt;br /&gt;
* debug 3 will only display greeting messages and error messages.&lt;br /&gt;
&lt;br /&gt;
Note that if you use the -d switch from the command line, the debug setting will be overruled and the full debug output will be displayed.&lt;br /&gt;
&lt;br /&gt;
If you prefer some commands to be called by another name, you can set aliases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
alias dir ls&lt;br /&gt;
alias less more&lt;br /&gt;
alias zless zmore&lt;br /&gt;
alias bzless bzmore&lt;br /&gt;
alias reconnect &amp;quot;close; cache flush; cd .&amp;quot;&lt;br /&gt;
alias edit &amp;quot;eval -f &amp;quot;get $0 -o ~/.lftp/edit.tmp.$$ &amp;amp;&amp;amp; shell \\&amp;quot;cp -p ~/.lftp/edit.tmp.$$ ~/.lftp/edit.tmp.$$.orig &amp;amp;&amp;amp; vim ~/.lftp/edit.tmp.$$ &amp;amp;&amp;amp; test ~/.lftp/edit.tmp.$$ -nt ~/.lftp/edit.tmp.$$.orig\\&amp;quot; &amp;amp;&amp;amp; put ~/.lftp/edit.tmp.$$ -o $0; shell rm -f ~/.lftp/edit.tmp.$$*&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The last alias (edit) should be all in one line. It allows you to get a remote file, edit it with vim (change as needed), and place the edited file back on the server. This is very convenient!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Example usage&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Below is an example of a mult-part download over the SFTP protocol:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;$ lftp -e &#039;pget -c -n 5 /path/to/file&#039; sftp://username@server&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
short explanation:&lt;br /&gt;
&lt;br /&gt;
* -e: lftp option to execute command&lt;br /&gt;
* pget: is the command for partial download&lt;br /&gt;
* -c: pget option to resume&lt;br /&gt;
* -n: pget option for number of parts&lt;br /&gt;
&lt;br /&gt;
== Gui FTP client: About pcmanfm package ==&lt;br /&gt;
&lt;br /&gt;
PCMAnfM is a filemanager.. that by the usage of the {{Pkg|gvfs}} gio we can use with ftp servers as graphical clients, is easy to use just open the pcmanfm program and then:&lt;br /&gt;
&lt;br /&gt;
# From the bar menu open the &amp;quot;go&amp;quot; menu&lt;br /&gt;
# Then choose &amp;quot;Connect to a server&amp;quot;&lt;br /&gt;
# Choose the FTP protocol and input username (path is optional)&lt;br /&gt;
# After a while you will input the password&lt;br /&gt;
&lt;br /&gt;
Check the picture for furter reference:&lt;br /&gt;
&lt;br /&gt;
[[File:Ftp-gui-pcmanfm_at_2020-09-11_14-13-03.png]]&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
* [[Alpine newbie developer]]&lt;br /&gt;
* [[Alpine newbie lammers]]&lt;br /&gt;
* https://pkgs.alpinelinux.org/packages?name=tftp-hpa related to [[PXE boot]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Newbie]]&lt;br /&gt;
[[Category:Server]]&lt;br /&gt;
[[Category:Web_Server]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Junialter</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=MariaDB&amp;diff=17285</id>
		<title>MariaDB</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=MariaDB&amp;diff=17285"/>
		<updated>2020-04-23T07:49:00Z</updated>

		<summary type="html">&lt;p&gt;Junialter: /* Initialization */ Streamlined language a bit and optimized the documentation by removing redundant information.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://mariadb.org/ MariaDB] is a community-developed fork of the MySQL relational database management system intended to remain free under the GNU GPL. It is notable for being led by the original developers of MySQL, who forked it due to concerns over its acquisition by Oracle.&lt;br /&gt;
&lt;br /&gt;
== Instalation ==&lt;br /&gt;
&lt;br /&gt;
Alpine Linux has dummy counterparts packages for those that are not close to that change from &#039;&#039;mysql&#039;&#039; to &#039;&#039;mariadb&#039;&#039; naming packages.&lt;br /&gt;
&lt;br /&gt;
Take in consideration that the user &amp;lt;code&amp;gt;mysql&amp;lt;/code&amp;gt; was created during instalation of packages, in the initialization section two users will be created in database init: &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mysql&amp;lt;/code&amp;gt;, and in that point only if are in their respective system accounts, will be able to connect to the database service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
apk add mysql mysql-client&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That will install the most used ones.. &amp;lt;code&amp;gt;mariadb-cient&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mariadb-server&amp;lt;/code&amp;gt;, rest of packages are brief described here for more information, here are listed in orden of relevance for production server&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MySQL name package !! Since Alpine: !! Brief usage !! Related package&lt;br /&gt;
|-&lt;br /&gt;
| mysql || v2 || it&#039;s a dummy package to easy install of mariadb || mariadb&lt;br /&gt;
|-&lt;br /&gt;
| mysql-client || v2 || it&#039;s a dummy package to easy install of commands tools || mariadb-client&lt;br /&gt;
|-&lt;br /&gt;
| mariadb || v2 || server equivalent to mysql-server || mariadb-common&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-client || v2 || connection command line and tools || mariadb-common&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-doc || v3.0 || manpages are there! || man man-pages&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-connector-odbc || edge || coding or making OS level connections, to any DB without libs install || .&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-connector-c || v3.8 || coding connection on C sources || mariadb-connector-c-dev&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-backup || v3.8 || to external backup devices, not widely used, in past was inside mariadb package || .&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-server-utils || v3.8 || server commands not widely used, in past was inside mariadb package || .&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-dev || v3.1 || Need for compilations depends on source code || .&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-test || v3.3 || testing suite from MariaDB tools || .&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-mytop || v3.9 || data performance monitoring || .&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-plugin-rocksdb || v3.9 || plain key-value event relational for data || .&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-static || v3.8 || static libs for static non depends linking in builds || .&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-embedded || v3.9 || the libmysqld identical interface as the C client || mariadb-embedded-dev&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-embedded-dev || v3.9 ||  use the normal mysql.h and link with libmysqld instead of libmysqlclient || mariadb-dev&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-openrc || v3.8 || separate scripts, in past was embebed on server package || .&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Initialization ==&lt;br /&gt;
&lt;br /&gt;
The alpine package of MySQL/MariaDB are like normal tarball of MySQL one, admins must know what they want.. there&#039;s no automatic window-like installation here.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;datadir&#039;&#039; located at &amp;lt;code&amp;gt;/var/lib/mysql&amp;lt;/code&amp;gt; must be owned by the mysql user and group. You can modify this behavior but must edit the service file at &amp;lt;code&amp;gt;/etc/init.d&amp;lt;/code&amp;gt; directory. Also, you need to set &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;datadir=&amp;lt;YOUR_DATADIR&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; under section &amp;lt;code&amp;gt;[mysqld]&amp;lt;/code&amp;gt; at the config file.&lt;br /&gt;
&lt;br /&gt;
# Initialize the main mysql database, and the data dir as standardized to &amp;lt;code&amp;gt;/var/lib/mysql&amp;lt;/code&amp;gt; by the rc script.&amp;lt;br&amp;gt;/etc/init.d/mariadb setup&lt;br /&gt;
# Then you can start the service but there&#039;s no root password set until this point.&amp;lt;br&amp;gt;/etc/init.d/mariadb start&lt;br /&gt;
# Secure the installation by running&amp;lt;code&amp;gt;mysql_secure_installation&amp;lt;/code&amp;gt;&lt;br /&gt;
# Setup permissions for manage others users and databases&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
In order to finish setup into &#039;&#039;&#039;MariaDB&#039;&#039;&#039; now provide &#039;&#039;&#039;this script called &amp;lt;code&amp;gt;mysql_secure_instalation&amp;lt;/code&amp;gt; that also are present as &amp;lt;code&amp;gt;mariadb-secure-installation&amp;lt;/code&amp;gt;&#039;&#039;&#039;, too. This script provides minimal and security setup to the database, and here are the questions made explained:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Enter current password for root (enter for none):&#039;&#039;&#039; If you have previously set up a root password, provide it here and press enter. If correctly entered, the response will be &amp;lt;code&amp;gt;OK, successfully used password, moving on...&amp;lt;/code&amp;gt;&lt;br /&gt;
#  &#039;&#039;&#039;Switch to unix_socket authentication [Y/n]&#039;&#039;&#039; Setting the root password or using the Unix_socket ensures that only admins can log into engine database. MySQL 5.6 and MariaDB 10.2 introduced socket authentication, where system users are the same as the MySQL/MariaDB users. For production servers you should disable this by answering &amp;quot;n&amp;quot;, which will give you the response &amp;lt;code&amp;gt;... skipping.&amp;lt;/code&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Change the root password? [Y/n]&#039;&#039;&#039; This gives you the opportunity to change the root password to a stronger one if necessary. If this is not needed, enter &#039;n&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Remove anonymous users? [Y/n]&#039;&#039;&#039; Remove anonymous users created to log in using socket authentication. For production systems, disallow this by answering &#039;Y&#039;, resulting in: &amp;lt;code&amp;gt;... Success!&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &#039;&#039;&#039;Disallow root login remotely? [Y/n]&#039;&#039;&#039; Normally, root should only be allowed to connect from &#039;localhost&#039; in order to protect from password sniffing attempts over the network. Enter &#039;Y&#039; to get: &amp;lt;code&amp;gt;... Success!&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &#039;&#039;&#039;Remove test database and access to it? [Y/n]&#039;&#039;&#039; By default, MariaDB comes with a database named &#039;test&#039; that anyone can access. If this is not needed, &#039;Y&#039;. The response will be: &amp;lt;code&amp;gt;... Success!&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &#039;&#039;&#039;Reload privilege tables now? [Y/n]&#039;&#039;&#039; Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Answer &#039;Y&#039; and the response will be: &amp;lt;code&amp;gt;... Success!&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
After responding to each question, restart the service with &amp;lt;code&amp;gt;rc-service mariadb restart&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration files and customization ===&lt;br /&gt;
&lt;br /&gt;
Due today were influenced by systemd standardization, the famous &amp;lt;nowiki&amp;gt;my.cnf&amp;lt;/nowiki&amp;gt; are not more the main config file for the server engine. Now only few variables are defined there and all the settings are provided by independent files into the &amp;lt;code&amp;gt;/etc/my.cnf.d/&amp;lt;/code&amp;gt; directory, user own config files are under &amp;lt;code&amp;gt;~/.my.cnf&amp;lt;/code&amp;gt; config file of each home dir, and are read after global ones; so then we have:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Config file !! Path and name !! Versions of Alpine !! Contents to configure&lt;br /&gt;
|-&lt;br /&gt;
| my.cnf || &amp;lt;nowiki&amp;gt;/etc/mysql/my.cnf&amp;lt;/nowiki&amp;gt; || v2 to v3.8 || All the directives, Global config file&lt;br /&gt;
|-&lt;br /&gt;
| mariadb-server.cnf || /etc/my.cnf.d/mariadb-server.cnf || since 3.9 || First Global config file, main directives&lt;br /&gt;
|-&lt;br /&gt;
| .my.cnf || &amp;lt;nowiki&amp;gt;$HOME&amp;lt;/nowiki&amp;gt; || all || user name only config directives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer system Alpine packages can set in independent files in any case those commands always works and where are not apply just will ignore the output:&lt;br /&gt;
&lt;br /&gt;
* On older Alpine system must set config files for MAX ALLOWED PACKETS to minimun proper amount:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
sed -i &amp;quot;s|.*max_allowed_packet\s*=.*|max_allowed_packet = 100M|g&amp;quot; /etc/mysql/my.cnf&lt;br /&gt;
sed -i &amp;quot;s|.*max_allowed_packet\s*=.*|max_allowed_packet = 100M|g&amp;quot; /etc/my.cnf.d/mariadb-server.cnf&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Only allow local connections on cases where there&#039;s only one server or no expected to connect from others:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
sed -i &amp;quot;s|.*bind-address\s*=.*|bind-address=127.0.0.1|g&amp;quot; /etc/mysql/my.cnf&lt;br /&gt;
sed -i &amp;quot;s|.*bind-address\s*=.*|bind-address=127.0.0.1|g&amp;quot; /etc/my.cnf.d/mariadb-server.cnf&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If are not in domain controller, dont search for hostnames to improve performance responses (ideal for local only servers):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
sed -i &amp;quot;s|.*skip-networking.*|skip-networking|g&amp;quot; /etc/mysql/my.cnf&lt;br /&gt;
sed -i &amp;quot;s|.*skip-networking.*|skip-networking|g&amp;quot; /etc/my.cnf.d/mariadb-server.cnf&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Set default charset to UTF8MB4, in newer versions (since Alpine v3.9), just added a new file to added thus customization, but older versions (below Alpine v3.8)of the package does not have a charset section, so you must added manually to the main configuration in each respective section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
cat &amp;gt; /etc/my.cnf.d/mariadb-server-default-charset.cnf &amp;lt;&amp;lt; EOF&lt;br /&gt;
[client]&lt;br /&gt;
default-character-set = utf8mb4&lt;br /&gt;
&lt;br /&gt;
[mysqld]&lt;br /&gt;
collation_server = utf8mb4_unicode_ci&lt;br /&gt;
character_set_server = utf8mb4&lt;br /&gt;
&lt;br /&gt;
[mysql]&lt;br /&gt;
default-character-set = utf8mb4&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Updating or comming from upgrading ==&lt;br /&gt;
&lt;br /&gt;
Mayor Upgrades beetween Alpine linux version are so easy as change the repository version, but the MySQL/MariaDB  engine need some extra steps when this are performed:&lt;br /&gt;
&lt;br /&gt;
Upgrade databases on major releases&lt;br /&gt;
Upon a major version release of mariadb (for example mariadb-10.1.10-1 to mariadb-10.1.18-1), it is wise to upgrade databases:&lt;br /&gt;
&lt;br /&gt;
# keep the old database (mysql sheme) structure of the engine daemon, currently this are not more the case, today this not make sense anymore&lt;br /&gt;
# upgrade the MariaDB/MySQL packages, of course with must be done if the upgrade process to mayor alpine version does not!&lt;br /&gt;
# run the &amp;lt;code&amp;gt;mysql_upgrade -u root -p&amp;lt;/code&amp;gt; script, providing the password or root, (from the new package version) against the old still-running database (mysql sheme). This will produce some error messages; however, the upgrade will succeed.&lt;br /&gt;
# Restart the service&lt;br /&gt;
&lt;br /&gt;
If are unable to run &#039;&#039;mysql_upgrade&#039;&#039; because MySQL cannot start try run MySQL in safemode with &amp;lt;code&amp;gt;mysqld_safe --datadir=/var/lib/mysql/&amp;lt;/code&amp;gt; command and then run the &amp;lt;code&amp;gt;mysql_upgrade -u root -p&amp;lt;/code&amp;gt; script.&lt;br /&gt;
&lt;br /&gt;
= Relevant important notes =&lt;br /&gt;
&lt;br /&gt;
== File system notes about the databases managed ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BTRFS Notes&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
If the database (in &amp;lt;code&amp;gt;/var/lib/mysql&amp;lt;/code&amp;gt;) resides on a Btrfs file system, you should consider disabling &#039;&#039;&#039;Copy-on-Write&#039;&#039;&#039; for the directory before creating any database (schemes), after initialization you can enabled again. But .. on every database creation (scheme creation), you must disabled again, to avoid corrupted data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ZFS Bock sizes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ZFS, unlike most other file systems, has a variable record size, or what is commonly referred to as a block size. By default, the recordsize on ZFS is 128KiB, which means it will dynamically allocate blocks of any size from 512B to 128KiB depending on the size of file being written. Most RDBMSes work in 8KiB-sized blocks by default. Although the block size is tunable for MySQL/MariaDB use an 8KiB block size by default.&lt;br /&gt;
&lt;br /&gt;
It is usually desirable to tune ZFS instead to accommodate the databases, using a command such as &amp;lt;code&amp;gt;zfs set recordsize=8K /var/lib/mysql&amp;lt;/code&amp;gt; (or change /var/lib/mysql to the mount point where /var/lib/mysql resides) and in the interest of saving memory, it is best to simply disable ZFS&#039;s caching of the database&#039;s file data and let the database do its own job  with &amp;lt;code&amp;gt;zfs set primarycache=metadata /var/lib/mysql&amp;lt;/code&amp;gt; (or change /var/lib/mysql to the mount point where /var/lib/mysql resides).&lt;br /&gt;
&lt;br /&gt;
But beware, these kinds of tuning parameters are only if RDBMSes are setup in dedicated partitions, if your root and of course database are all in one partition, dont do that. Separate ones.&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
* [[PotsgreSQL]]&lt;br /&gt;
* [[Production LAMP system: Lighttpd + PHP + MySQL]]&lt;br /&gt;
* [[Alpine newbie developer]]&lt;br /&gt;
* [[Alpine newbie lammers]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Newbie]]&lt;br /&gt;
[[Category:Server]]&lt;br /&gt;
[[Category:Database]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Security]]&lt;br /&gt;
[[Category:Production]]&lt;/div&gt;</summary>
		<author><name>Junialter</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=KVM&amp;diff=16979</id>
		<title>KVM</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=KVM&amp;diff=16979"/>
		<updated>2020-03-02T11:09:49Z</updated>

		<summary type="html">&lt;p&gt;Junialter: /* Networking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.linux-kvm.org/page/Main_Page KVM] is an free and open source virtualization solution in a kernel module. Although it is often simply referred to as KVM, the actual hypervisor is [https://www.qemu.org QEMU]. QEMU runs from user-space, but can integrate with KVM, providing better performance by leveraging the hardware from kernel-space. QEMU can virtualize x86, PowerPC, and S390 guests, amongst others. [https://libvirt.org Libvirt] is a management framework that integrates with QEMU/KVM, [https://wiki.alpinelinux.org/wiki/LXC LXC], [https://wiki.alpinelinux.org/wiki/Xen_Dom0 Xen] and others.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
The following commands provide &#039;&#039;&#039;libvirt&#039;&#039;&#039; as well as &#039;&#039;&#039;QEMU with emulation for x86_64&#039;&#039;&#039; and &#039;&#039;&#039;qemu-img&#039;&#039;&#039;, a necessary component for using various disk formats such as qcow2. Without qemu-img, only raw disks are available. It can also convert images between several formats like vhdx and vmdk.&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;# apk add libvirt-daemon qemu-img qemu-system-x86_64&lt;br /&gt;
# rc-update add libvirtd&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
By default, libvirt uses NAT for VM connectivity. If you want to use the default configuration, you need to load the tun module.&lt;br /&gt;
{{Cmd|# modprobe tun}}&lt;br /&gt;
&lt;br /&gt;
If you prefer bridging a guest over your Ethernet interface, you need to make a [https://wiki.alpinelinux.org/wiki/Bridge#Configuration_file bridge].&lt;br /&gt;
&lt;br /&gt;
It&#039;s quite common to use bridges with KVM environments but when IPv6 is used, Alpine will assign itself a link-local address as well as an SLAAC address in case there&#039;s a router sending Router Advertisements. You don&#039;t want this because you don&#039;t want to have the KVM host an IP address in every network it serves to guests. Unfortunately you cannot just disable IPv6 for the bridge via sysctl because it might not be up at boottime when sysctl fires. There&#039;s a workaround though which is to put a post-up hook into the /etc/network/interfaces file like this:&lt;br /&gt;
 auto brlan&lt;br /&gt;
 iface brlan inet manual&lt;br /&gt;
        bridge-ports eth1.5&lt;br /&gt;
        bridge-stp 0&lt;br /&gt;
        post-up ip -6 a flush dev brlan; sysctl -w net.ipv6.conf.brlan.disable_ipv6=1&lt;br /&gt;
&lt;br /&gt;
== Management ==&lt;br /&gt;
For (non-root) management, you will need to add your user to the libvirt group.&lt;br /&gt;
{{Cmd|# addgroup user libvirt}}&lt;br /&gt;
&lt;br /&gt;
You can use libvirt&#039;s virsh on the CLI. It can execute commands as well as run as an interactive shell. Read its manual page and/or use the &amp;quot;help&amp;quot; command for more info. Some basic commands are:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;virsh help&lt;br /&gt;
virsh list --all&lt;br /&gt;
virsh start $domain&lt;br /&gt;
virsh shutdown $domain&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The libvirt project provides a GUI for managing hosts, called virt-manager. It handles local systems as well as remote ones via SSH.&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;# apk add dbus polkit virt-manager&lt;br /&gt;
# rc-update add dbus&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
In order to use libvirtd to remotely control KVM over ssh PolicyKit needs a .pkla informing it that this is allowed.&lt;br /&gt;
Write the following file to /etc/polkit-1/localauthority/50-local.d/50-libvirt-ssh-remote-access-policy.pkla&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;[Remote libvirt SSH access]&lt;br /&gt;
 Identity=unix-group:libvirt&lt;br /&gt;
 Action=org.libvirt.unix.manage&lt;br /&gt;
 ResultAny=yes&lt;br /&gt;
 ResultInactive=yes&lt;br /&gt;
 ResultActive=yes&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Virtualization]]&lt;/div&gt;</summary>
		<author><name>Junialter</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=KVM&amp;diff=16978</id>
		<title>KVM</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=KVM&amp;diff=16978"/>
		<updated>2020-03-02T10:10:02Z</updated>

		<summary type="html">&lt;p&gt;Junialter: /* Networking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.linux-kvm.org/page/Main_Page KVM] is an free and open source virtualization solution in a kernel module. Although it is often simply referred to as KVM, the actual hypervisor is [https://www.qemu.org QEMU]. QEMU runs from user-space, but can integrate with KVM, providing better performance by leveraging the hardware from kernel-space. QEMU can virtualize x86, PowerPC, and S390 guests, amongst others. [https://libvirt.org Libvirt] is a management framework that integrates with QEMU/KVM, [https://wiki.alpinelinux.org/wiki/LXC LXC], [https://wiki.alpinelinux.org/wiki/Xen_Dom0 Xen] and others.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
The following commands provide &#039;&#039;&#039;libvirt&#039;&#039;&#039; as well as &#039;&#039;&#039;QEMU with emulation for x86_64&#039;&#039;&#039; and &#039;&#039;&#039;qemu-img&#039;&#039;&#039;, a necessary component for using various disk formats such as qcow2. Without qemu-img, only raw disks are available. It can also convert images between several formats like vhdx and vmdk.&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;# apk add libvirt-daemon qemu-img qemu-system-x86_64&lt;br /&gt;
# rc-update add libvirtd&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
By default, libvirt uses NAT for VM connectivity. If you want to use the default configuration, you need to load the tun module.&lt;br /&gt;
{{Cmd|# modprobe tun}}&lt;br /&gt;
&lt;br /&gt;
If you prefer bridging a guest over your Ethernet interface, you need to make a [https://wiki.alpinelinux.org/wiki/Bridge#Configuration_file bridge].&lt;br /&gt;
&lt;br /&gt;
It&#039;s quite common to use bridges with KVM environments but when IPv6 is there Alpine will assign itself a link-local address as well as an SLAAC address in case there&#039;s a router sending Router Advertisements. You don&#039;t want this because you don&#039;t want to have the KVM host an IP address in every network it serves to guests. Unfortunately you cannot just disable IPv6 for the bridge via sysctl because it might not be up at boottime when sysctl fires. There&#039;s a workaround though which is to put a post-up hook into the /etc/network/interfaces file like this:&lt;br /&gt;
 auto brlan&lt;br /&gt;
 iface brlan inet manual&lt;br /&gt;
        bridge-ports eth1.5&lt;br /&gt;
        bridge-stp 0&lt;br /&gt;
        post-up ip -6 a flush dev brlan; sysctl -w net.ipv6.conf.brlan.disable_ipv6=1&lt;br /&gt;
&lt;br /&gt;
== Management ==&lt;br /&gt;
For (non-root) management, you will need to add your user to the libvirt group.&lt;br /&gt;
{{Cmd|# addgroup user libvirt}}&lt;br /&gt;
&lt;br /&gt;
You can use libvirt&#039;s virsh on the CLI. It can execute commands as well as run as an interactive shell. Read its manual page and/or use the &amp;quot;help&amp;quot; command for more info. Some basic commands are:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;virsh help&lt;br /&gt;
virsh list --all&lt;br /&gt;
virsh start $domain&lt;br /&gt;
virsh shutdown $domain&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The libvirt project provides a GUI for managing hosts, called virt-manager. It handles local systems as well as remote ones via SSH.&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;# apk add dbus polkit virt-manager&lt;br /&gt;
# rc-update add dbus&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
In order to use libvirtd to remotely control KVM over ssh PolicyKit needs a .pkla informing it that this is allowed.&lt;br /&gt;
Write the following file to /etc/polkit-1/localauthority/50-local.d/50-libvirt-ssh-remote-access-policy.pkla&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;[Remote libvirt SSH access]&lt;br /&gt;
 Identity=unix-group:libvirt&lt;br /&gt;
 Action=org.libvirt.unix.manage&lt;br /&gt;
 ResultAny=yes&lt;br /&gt;
 ResultInactive=yes&lt;br /&gt;
 ResultActive=yes&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Virtualization]]&lt;/div&gt;</summary>
		<author><name>Junialter</name></author>
	</entry>
</feed>