<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.baszarek.pl/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wiki.baszarek.pl/feed.php">
        <title>Baszarek Wiki - wiki</title>
        <description></description>
        <link>https://wiki.baszarek.pl/</link>
        <image rdf:resource="https://wiki.baszarek.pl/lib/exe/fetch.php?media=logo.png" />
       <dc:date>2026-04-07T10:49:58+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:alanbeczka&amp;rev=1682865306"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:ansible&amp;rev=1745649909"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:apt_timer&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:audacity_pulseaudio&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:backup&amp;rev=1664882410"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:bash_slowowzmiennej&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:basz_zawijanie&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:brother1222&amp;rev=1751477012"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:centos_root_raid&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:certyfikat_ssl_https&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:chroot&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:cron_gnome&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:cryptfsck&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:czytaniecrtkey&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:dell_perc&amp;rev=1706167802"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:dia&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:django_setup&amp;rev=1679838011"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:django_tests&amp;rev=1670156255"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:dnf_makecache&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:dnf_moduly&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:dnf&amp;rev=1714850069"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:dokuwiki&amp;rev=1707739749"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:dracut_ze_wszystkim&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:dracut&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:evolution_reply&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:fail2ban&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:fedora_poradnik&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:fedorawovh&amp;rev=1661334494"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:firefox&amp;rev=1729416554"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:firewalld&amp;rev=1710656414"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:flatpak_centos&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:fontyxterm&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:fontyzpdf&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:freesco&amp;rev=1699081224"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:goaccess&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:googlechrome&amp;rev=1685196998"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:gpg_notesik&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:graylog&amp;rev=1733411205"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:gtk3motyw&amp;rev=1774501535"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:homeraid&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:ignoreeof&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:ikonka_venv&amp;rev=1765865025"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:inotifywait&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:iptables22&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:jasnienie&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:java_console&amp;rev=1727368501"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:kvm&amp;rev=1707555725"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:letsencrypt&amp;rev=1698210311"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:leworeczny&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:licencje_programow_rpm&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:listasql&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:losowik&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:lvm&amp;rev=1731433648"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:manen&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:mariadb_replika&amp;rev=1769528287"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:minipodrecnikeducd&amp;rev=1730534482"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:mm6_solo_cleric&amp;rev=1669411618"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:mod-itk&amp;rev=1767338050"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:montowanie_samby&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:mucode&amp;rev=1761048045"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_2341&amp;rev=1775102130"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_dysk&amp;rev=1775498867"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_file_transfer&amp;rev=1775103340"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_haslo&amp;rev=1774921828"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_panel&amp;rev=1774924174"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5&amp;rev=1775104701"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:my_import&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:mypell_nadmiarowe_slowniki&amp;rev=1697378853"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:mysql_haslo_cnf&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:nagios&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:ncselinux&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:ncupdateverify&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:newsboat&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:nextcloud&amp;rev=1766127824"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:nmcli_shell&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:openvpn&amp;rev=1680342890"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:outlook_msg&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:owncloud_bfp&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:pleskd10php56&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:podman&amp;rev=1766831590"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:podreczniktrenera&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:portynfs&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:python_systemd&amp;rev=1707335882"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:python_tkinter&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:python_w_apache&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:qt5motyw&amp;rev=1729328016"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:raspbian_stip&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:raspi_hdparm&amp;rev=1664369483"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:raspi_instalacja&amp;rev=1722773842"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:reinstall_mariadb&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:rhel_megaraid&amp;rev=1698344301"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:rhel_subscription_manager&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:rm&amp;rev=1699022119"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:rozaniec_mariadb&amp;rev=1664983787"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:rpm_lista&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:serwerownia&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:slowniczek_rsync&amp;rev=1706944155"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:slowniczek_snap&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:socks_proxy&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:sortip&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:sortowainels&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:spec&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:swapfile&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:syntax&amp;rev=1707739749"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:syoutube_dl&amp;rev=1767508994"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:systemd_resolved&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:szukanie_hosta_443&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:tape_storage&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:tar_gpg&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:tar&amp;rev=1708777163"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:temparaturapi&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:toolbox&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:vbox_bridge&amp;rev=1664179418"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:vbox_mem&amp;rev=1734860383"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:vimrc&amp;rev=1700245292"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:welcome&amp;rev=1707739749"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:wiki10&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:win10installusb&amp;rev=1714743472"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:windowmaker&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:wine&amp;rev=1700910211"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:wlaczanie_selinux&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:wordpress&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:wp_user&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:wylaczeniewifibt&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:xinput_gladzik&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:zerowanie&amp;rev=1660815847"/>
                <rdf:li rdf:resource="https://wiki.baszarek.pl/doku.php?id=wiki:zzzver&amp;rev=1660815847"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wiki.baszarek.pl/lib/exe/fetch.php?media=logo.png">
        <title>Baszarek Wiki</title>
        <link>https://wiki.baszarek.pl/</link>
        <url>https://wiki.baszarek.pl/lib/exe/fetch.php?media=logo.png</url>
    </image>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:alanbeczka&amp;rev=1682865306">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-30T14:35:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>alanbeczka</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:alanbeczka&amp;rev=1682865306</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;panel_i_beczki_alantec&quot;&gt;Panel i beczki Alantec&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Jak dopasować beczki RJ-45 firmy Alantec do panelu.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Aalanbeczka&amp;amp;media=alan01.jpg&quot; class=&quot;media&quot; title=&quot;alan01.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=1488fe&amp;amp;media=alan01.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Aalanbeczka&amp;amp;media=alan02.jpg&quot; class=&quot;media&quot; title=&quot;alan02.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=4fa591&amp;amp;media=alan02.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Niestety uchwyto-dystanse zastosowane w beczkach nie pozwalają na umieszczenie ich obok siebie w panelu.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Aalanbeczka&amp;amp;media=alan06.jpg&quot; class=&quot;media&quot; title=&quot;alan06.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=539ce7&amp;amp;media=alan06.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Aalanbeczka&amp;amp;media=alan04.jpg&quot; class=&quot;media&quot; title=&quot;alan04.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=7f43a9&amp;amp;media=alan04.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Rozwiązaniem jest usunięcie połowy dystansów według dowolnego klucza, byle się powtarzał. Dwie z dwudziestu czterech beczek mają odrobinę luzu. Nie mają go na tyle dużo, by wypadały przy umieszczaniu w nich wtyczek, ale jest to zauważalne.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Aalanbeczka&amp;amp;media=alan05.jpg&quot; class=&quot;media&quot; title=&quot;alan05.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=725ac2&amp;amp;media=alan05.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Aalanbeczka&amp;amp;media=alan07.jpg&quot; class=&quot;media&quot; title=&quot;alan07.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=e194a3&amp;amp;media=alan07.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:ansible&amp;rev=1745649909">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-26T06:45:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ansible</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:ansible&amp;rev=1745649909</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ansible&quot;&gt;Ansible&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;sprawdzanie_czy_dzisiejszy_cronowy_playbook_wykonal_sie_prawidlowo&quot;&gt;Sprawdzanie, czy dzisiejszy, &amp;quot;cronowy&amp;quot; playbook wykonał się prawidłowo&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;cat ansible.log | grep -E &amp;quot;^$(date &amp;quot;+%Y-%m-%d&amp;quot;).*failed&amp;quot; | grep -Ev &amp;quot;failed\=0&amp;quot; | wc -l&lt;/pre&gt;

&lt;p&gt;
Zakładając, że powyższe polecenie jest w pliku check_failed.sh i ścieżka do pliku z logami jest poprawna, można wysłać raport raport na &lt;abbr title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/abbr&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;---
- name: Send status on IRC
  hosts: my-host.ping.local

  tasks:

  - name: Check failed tasks
    command: &amp;#039;/usr/bin/bash /home/lukasz/ansible/helpers/check_failed.sh&amp;#039;
    register: fails

  - name: Send a report to a fedora-pl channel
    irc:
      server: irc.libera.chat
      port: 6667
      nick: raport
      channel: &amp;#039;#fedora-pl&amp;#039;
      msg: &amp;quot;[ANSIBLE] Todays failed tasks: {{ fails[&amp;#039;stdout_lines&amp;#039;][0] }}.&amp;quot;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;plik_konfiguracyjny&quot;&gt;Plik konfiguracyjny&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;[defaults]                                                                                                                             
inventory=~/ansible/hosts
log_path=~/ansible/var/ansible.log
remote_user=ansemble
interpreter_python=auto_silent
[privilege_escalation]
become=True
become_ask_pass=False
become_method=sudo
[persistent_connection]
[connection]
[colors]
[selinux]
[diff]
[galaxy]
[inventory]
[netconf_connection]
[paramiko_connection]
[jinja2]
[tags]
[runas_become_plugin]
[su_become_plugin]
[sudo_become_plugin]
[callback_tree]
[ssh_connection]
ssh_args = -C -o ServerAliveInterval=33 -o ControlMaster=auto -o ControlPersist=66s
timeout=21
[winrm]
[inventory_plugins]
[inventory_plugin_script]
[inventory_plugin_yaml]
[url_lookup]
[powershell]
[vars_host_group_vars]&lt;/pre&gt;

&lt;p&gt;
Ustawienie &lt;em&gt;auto_silent&lt;/em&gt; usuwa ostrzeżenia o wersji Pythona z każdego przebiegu playbooków. Warto użyć nazwy użytkownika, która nie jest zbyt często zgadywana przez boty.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;petle_w_playbookach_oraz_helpery&quot;&gt;Pętle w playbookach oraz helpery&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Przykład playbooka korzystącego z pętli:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;---
- name: Enable users
  hosts: all

  tasks:

  - name: Ensure that users exists and are in correct groups
    include_tasks: helpers/users_enable.yaml
    loop:
    - {username: lukasz, comment: Lukasz, sshkey: &amp;quot;{{ lookup(&amp;#039;file&amp;#039;, &amp;#039;ssh_keys/lukasz&amp;#039;) }}&amp;quot;}

#  - name: Ensure that users can not login
#    include_tasks: helpers/users_disable.yaml
#    loop:
#    - {username: qwerty, comment: QWERTY, sshkey: &amp;quot;{{ lookup(&amp;#039;file&amp;#039;, &amp;#039;ssh_keys/QWERTY&amp;#039;) }}&amp;quot;}&lt;/pre&gt;

&lt;p&gt;
Plik helpers/user_enable.yaml:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;- debug:
    msg: user - {{ item.username }}


- name: Ensure user exists and is in correct groups on FreeBSD
  user:
    name: &amp;quot;{{ item.username }}&amp;quot; 
    comment: &amp;quot;{{ item.comment }}&amp;quot;
    shell: /usr/local/bin/bash
    groups: wheel
    append: yes
  when: ansible_os_family == &amp;#039;FreeBSD&amp;#039;

- name: Ensure user exists and is in correct groups on Gentoo and RedHat-like hosts
  user:
    name: &amp;quot;{{ item.username }}&amp;quot; 
    comment: &amp;quot;{{ item.comment }}&amp;quot;
    shell: /bin/bash
    groups: wheel
    append: yes
  when: ansible_os_family == &amp;#039;Gentoo&amp;#039; or ansible_os_family == &amp;#039;RedHat&amp;#039;

- name: Ensure user exists and is in correct groups on Debian-like hosts
  user:
    name: &amp;quot;{{ item.username }}&amp;quot; 
    comment: &amp;quot;{{ item.comment }}&amp;quot;
    shell: /bin/bash
    groups: sudo
    append: yes
  when: ansible_os_family == &amp;#039;Debian&amp;#039;

- name: Set authorized SSH keys for user
  authorized_key:
    user: &amp;quot;{{ item.username }}&amp;quot;
    key: &amp;quot;{{ item.sshkey }}&amp;quot;
    state: present
    exclusive: True

- name: Ensure user is able to log in
  user:
    name: &amp;quot;{{ item.username }}&amp;quot;
    password_lock: no

- name: Set permissions to home directory
  file:
    path: /home/{{ item.username }}
    owner: &amp;quot;{{ item.username }}&amp;quot;
    group: &amp;quot;{{ item.username }}&amp;quot;
    mode: &amp;#039;700&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Plik helpers/user_disable.yaml:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;- debug:
    msg: user - {{ item.username }}

- name: Ensure user is not able to log in
  user:
    name: &amp;quot;{{ item.username }}&amp;quot;
    password_lock: yes

- name: Unset authorized SSH keys for user
  authorized_key:
    user: &amp;quot;{{ item.username }}&amp;quot;
    key: &amp;quot;{{ item.sshkey }}&amp;quot;
    state: absent

- name: Set permissions to home directory on Linux
  file:
    owner: root
    group: root
    path: /home/{{ item.username }}
    mode: &amp;#039;700&amp;#039;
  when: ansible_os_family == &amp;#039;Gentoo&amp;#039; or ansible_os_family == &amp;#039;RedHat&amp;#039; or ansible_os_family == &amp;#039;Debian&amp;#039;

- name: Set permissions to home directory on FreeBSD
  file:
    owner: root
    group: wheel
    path: /home/{{ item.username }}
    mode: &amp;#039;700&amp;#039;
  when: ansible_os_family == &amp;#039;FreeBSD&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Plik w katalogu &lt;em&gt;ssh_keys&lt;/em&gt; jest skopiowany z &lt;em&gt;~/.ssh/id_rsa.pub&lt;/em&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;ansible_29_na_centos_stream_8&quot;&gt;Ansible 2.9 na CentOS Stream 8&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
W repozytorium ósmego Streama pojawiły się pakiety ansible-core w nowych wersjach, niekompatybilne z playbookami pisanymi pod wersję 2.9. Stara wersja jest wciąż dostępna na EPEL-u:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dnf install epel-release
dnf install ansible --exclude=ansible-core&lt;/pre&gt;

&lt;p&gt;
Do pliku /etc/yum.conf warto dodać wyjątek, żeby nie musieć o nim ciągle pamiętać.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;exclude=ansible-core&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;ansible_218_i_python&quot;&gt;Ansible 2.18 i Python&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Nowe wersje Ansibla wymagają Pythona 3.8 na klientach. W RHEL8 domyślnym jest Python 3.6, więc trzeba doinstalować nowszego. Błąd można wywołać nawet pingiem
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ansible -m ping all -o&lt;/pre&gt;

&lt;p&gt;
i wygląda on tak:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;An exception occurred during task execution. To see the full traceback, use -vvv. The error was: SyntaxError: future feature annotations
 is not defined                                                                                                                         
host.local | FAILED! =&amp;gt; {&amp;quot;ansible_facts&amp;quot;: {&amp;quot;discovered_interpreter_python&amp;quot;: &amp;quot;/usr/bin/python3&amp;quot;},&amp;quot;changed&amp;quot;: false,&amp;quot;module_stder
r&amp;quot;: &amp;quot;Shared connection to host.local closed.\r\n&amp;quot;,&amp;quot;module_stdout&amp;quot;: &amp;quot;Traceback (most recent call last):\r\n  File \&amp;quot;/home/antik
/.ansible/tmp/ansible-tmp-1745649074.378917-9407-261269877273608/AnsiballZ_ping.py\&amp;quot;, line 107, in &amp;lt;module&amp;gt;\r\n    _ansiballz_main()\r\n
  File \&amp;quot;/home/antik/.ansible/tmp/ansible-tmp-1745649074.378917-9407-261269877273608/AnsiballZ_ping.py\&amp;quot;, line 99, in _ansiballz_main\r\
n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n  File \&amp;quot;/home/antik/.ansible/tmp/ansible-tmp-1745649074.378917-9407-2612
69877273608/AnsiballZ_ping.py\&amp;quot;, line 44, in invoke_module\r\n    from ansible.module_utils import basic\r\n  File \&amp;quot;&amp;lt;frozen importlib._
bootstrap&amp;gt;\&amp;quot;, line 971, in _find_and_load\r\n  File \&amp;quot;&amp;lt;frozen importlib._bootstrap&amp;gt;\&amp;quot;, line 951, in _find_and_load_unlocked\r\n  File \&amp;quot;
&amp;lt;frozen importlib._bootstrap&amp;gt;\&amp;quot;, line 894, in _find_spec\r\n  File \&amp;quot;&amp;lt;frozen importlib._bootstrap_external&amp;gt;\&amp;quot;, line 1157, in find_spec\r
\n  File \&amp;quot;&amp;lt;frozen importlib._bootstrap_external&amp;gt;\&amp;quot;, line 1131, in _get_spec\r\n  File \&amp;quot;&amp;lt;frozen importlib._bootstrap_external&amp;gt;\&amp;quot;, line 
1112, in _legacy_get_spec\r\n  File \&amp;quot;&amp;lt;frozen importlib._bootstrap&amp;gt;\&amp;quot;, line 441, in spec_from_loader\r\n  File \&amp;quot;&amp;lt;frozen importlib._boot
strap_external&amp;gt;\&amp;quot;, line 544, in spec_from_file_location\r\n  File \&amp;quot;/tmp/ansible_ping_payload_598r6p8l/ansible_ping_payload.zip/ansible/
module_utils/basic.py\&amp;quot;, line 5\r\nSyntaxError: future feature annotations is not defined\r\n&amp;quot;,&amp;quot;msg&amp;quot;: &amp;quot;MODULE FAILURE: No start of json 
char found\nSee stdout/stderr for the exact error&amp;quot;,&amp;quot;rc&amp;quot;: 1}&lt;/pre&gt;

&lt;p&gt;
Na maszynie &lt;em&gt;host.local&lt;/em&gt; trzeba zainstalować nowszego Pythona:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# dnf module enable python39
# dnf install python39&lt;/pre&gt;

&lt;p&gt;
i w inwentarzu Ansibla poprawić każde wystąpienia &lt;em&gt;host.local&lt;/em&gt; na:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;host.local ansible_python_interpreter=/usr/bin/python3.9&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:apt_timer&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>apt_timer</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:apt_timer&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;apt_o_stalej_godzinie&quot;&gt;Apt o stałej godzinie&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Czas wykonania unattended upgrade jest domyślnie losowany, co nie zawsze pomaga w monitorowaniu, czy system jest aktualny. Można ustawić godziny na sztywno:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# systemctl edit apt-daily.timer

[Timer]
OnCalendar=
OnCalendar=*-*-* 6:30
RandomizedDelaySec=0&lt;/pre&gt;

&lt;p&gt;
oraz
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# systemctl edit apt-daily-upgrade.timer

[Timer]
OnCalendar=
OnCalendar=*-*-* 6:40
RandomizedDelaySec=0&lt;/pre&gt;

&lt;p&gt;
w wyniku czego:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# systemctl list-timers -a
NEXT                         LEFT          LAST                         PASSED       UNIT                         ACTIVATES
[...]
Fri 2020-10-30 06:30:00 CET  17h left      Thu 2020-10-29 12:39:06 CET  40s ago      apt-daily.timer              apt-daily.service
Fri 2020-10-30 06:40:00 CET  17h left      Thu 2020-10-29 06:25:33 CET  6h ago       apt-daily-upgrade.timer      apt-daily-upgrade.service&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:audacity_pulseaudio&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>audacity_pulseaudio</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:audacity_pulseaudio&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;audacity_i_pulseaudio&quot;&gt;Audacity i Pulseaudio&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Dotyczy Fedory, ale w innych dystrybucjach problem jest podobny. Jeżeli Audacity nie wykrywa źródeł dźwięku, w rodzaju interfejsów usb, należy doinstalować jeden pakiet:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dnf install alsa-plugins-pulseaudio.x86_64&lt;/pre&gt;

&lt;p&gt;
Wersja pakietu dla i686 może być już zainstalowana jako zależność od pakietu wine, ale 64-bitowy Audacity nie będzie z tym działał.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:backup&amp;rev=1664882410">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-04T11:20:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>backup</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:backup&amp;rev=1664882410</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;backup&quot;&gt;Backup&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Różne pomysły i zapiski.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Backup&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;backup&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-51&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;borg&quot;&gt;Borg&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Scenariusz kopii zapasowych opartych o borgbackup:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SRVA posiada przestrzeń na kopie zapasowe&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SRVB ma ważne pliki, które trzeba kopiować&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Serwer SRVA posiada dysk na kopie zapasowe:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sdb               8:16   0  600G  0 disk 
└─data-backup   253:2    0  550G  0 lvm  /mnt/data/backup&lt;/pre&gt;

&lt;p&gt;
Oraz użytkownika &lt;em&gt;zapas&lt;/em&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;zapas:x:1501:1501::/mnt/data/backup/zapas:/bin/bash&lt;/pre&gt;

&lt;p&gt;
Jako użytkownik &lt;em&gt;zapas&lt;/em&gt; przygotowano przestrzeń na kopie zapasowe na serwerze SRVA:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir -p pliki/srvb
cd pliki/srvb
borg init --encryption none .&lt;/pre&gt;

&lt;p&gt;
Na serwerze SRVB przygotowano klucze SSH dla użytkownika root:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-keygen&lt;/pre&gt;

&lt;p&gt;
ze wszystkimi domyślnymi opcjami. Następnie skopiowano zawartość pliku &lt;em&gt;/root/.ssh/id_rsa.pub&lt;/em&gt; z serwera SRVB do pliku &lt;em&gt;/mnt/data/backup/zapas/.ssh/authorized_keys&lt;/em&gt; na serwerze SRVA.
&lt;/p&gt;

&lt;p&gt;
Potwierdzono możliwość logowania z serwera SRVB na serwer SRVA:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh zapas@SRVA&lt;/pre&gt;

&lt;p&gt;
Wykonanie kopii zapasowych na serwerze SRVB:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;borg create ssh://zapas@SRVA:22/mnt/data/backup/zapas/pliki/srvb::{fqdn}-etc-{now} /etc
borg create ssh://zapas@SRVA:22/mnt/data/backup/zapas/pliki/srvb::{fqdn}-www-{now} /var/www&lt;/pre&gt;

&lt;p&gt;
W katalogu srvb na serwerze SRBA pojawi się kilka plików:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ tree srvb/
srvb/
├── config
├── data
│   └── 0
│       ├── 0
│       ├── 1
│       ├── 2
│       ├── 3
│       ├── 4
│       ├── 5
│       ├── 6
│       ├── 7
│       ├── 8
│       └── 9
├── hints.9
├── index.9
├── integrity.9
└── README&lt;/pre&gt;

&lt;p&gt;
Katalogów numerycznych będzie z czasem przybywać.
&lt;/p&gt;

&lt;p&gt;
Każde następne utworzenie backupu na serwerze SRVA będzie traktowane jako przyrostowe. Można to sprawdzić na serwerze SRVB listując backupy:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;borg list ssh://zapas@SRVA:22/mnt/data/backup/zapas/pliki/srbv
SRVB-etc-2022-09-10T13:57:47 Sat, 2022-09-10 13:57:49 [3d72c22d8d1a6d27e1556854c3065261cfc12cc2acd5fd2a052c4fccf173a57b]
SRVB-www-2022-09-10T13:58:26 Sat, 2022-09-10 13:58:27 [95bc01266ef2a75a44ecdb2428239a2ab96a349ae584f0313f5196a70bb053ed]
SRVB-etc-2022-09-15T04:22:11 Thu, 2022-09-15 04:22:11 [f7ecc4fd1b440c4046ed3fd9c25bdc9ade83b437989cf8fd421e930fae41a2be]
SRVB-www-2022-09-15T04:22:18 Thu, 2022-09-15 04:22:18 [3254377dd11ff0e100041715205e00faf36b3da47a7670456d0b46b4bdbea3a1]&lt;/pre&gt;

&lt;p&gt;
oraz porównując ich zawartość:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;borg diff ssh://zapas@SRVA:22/mnt/data/backup/zapas/pliki/srbv::SRVB-etc-2022-09-10T13:57:47 SRVB-etc-2022-09-15T04:22:11&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Odzyskiwanie kopii zapasowych&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Na serwerze SRVB utworzono punkt montowania:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir /root/restore&lt;/pre&gt;

&lt;p&gt;
oraz zamontowano zdalne repozytorium borga:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;borg mount ssh://zapas@SRVA:22/mnt/data/backup/zapas/pliki/srvb /root/restore/&lt;/pre&gt;

&lt;p&gt;
Można przeglądać ten katalog jak każdy inny oraz kopiować z niego pliki. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;borgfs on /root/restore type fuse (ro,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions)&lt;/pre&gt;

&lt;p&gt;
Po zakończeniu prac z odzyskiwaniem plików można odmontować repozytorium:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;borg umount /root/restore/&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Możliwe problemy&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Podczas przeglądania zawartości kopii zapasowej w katalogu z repozytorium tworzony jest plik w formacie json o nazwie &lt;em&gt;lock.roster&lt;/em&gt;. Jeżeli nie zostanie usunięty, kolejne kopie zapasowe nie będą wykonywane. Należy go wówczas ręcznie usunąć, lub zmienić jego nazwę.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt; Monitorowanie Borga &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Skrypty do monitorowania Borga za pomocą nrpe i Nagoisa:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/bash

repo=$1
wynik=`borg check -v -p /mnt/data/backup/zapas/pliki/${repo} &amp;amp;&amp;gt; /mnt/data/backup/zapas/stan/${repo}`
chmod 644 /mnt/data/backup/zapas/stan/${repo}&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/bash

if [[ `find /mnt/data/backup/zapas/ -type f -name lock.roster` ]] ;
then
  echo &amp;#039;CRITICAL lock exists&amp;#039;
  exit 2
else
  echo &amp;#039;OK no lock file&amp;#039;
  exit 0
fi&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/bash

repo=$1
if [[ `cat /mnt/data/backup/zapas/stan/${repo}` == *&amp;#039;Archive consistency check complete, no problems found.&amp;#039;* ]] ; then
  echo &amp;quot;OK backup ${repo}&amp;quot;
  exit 0
else
  echo &amp;quot;CRITICAL backup ${repo} not consistent&amp;quot;
  exit 2
fi&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Wykluczanie katalogów&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Wykluczanie katalogów &lt;em&gt;updater&lt;/em&gt;, na przykładzie katalogu z plikami aplikacji Nextcloud:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;borg create ssh://zapas@SRVA:22/mnt/data/backup/zapas/pliki/srvb::{fqdn}-www-{now} /var/www --exclude /var/www/nextcloud/public_html/data/updater-*&lt;/pre&gt;

&lt;p&gt;
Wykluczanie katalogów technicznych aplikacji znacznie zmniejsza poszczególne kopie przyrostowe.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Borg&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;borg&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;52-4516&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;mariadb&quot;&gt;MariaDB&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Najprostszy zrzut bazy MariaDB:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mysqldump bazadanych | bzip2 &amp;gt; bazadanych-$(date +%F).db.bz2&lt;/pre&gt;

&lt;p&gt;
Skrypty do sprawdzenia kopii baz danych dla nrpe i Nagiosa:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/bash

baza=$1

if [[ -e /mnt/data/backup/zapas/bazydanych/${baza}-$(date +%F).db.bz2 ]] ; then
  echo &amp;quot;OK backup bazy ${baza}&amp;quot; ;
  exit 0
else
  echo &amp;quot;CRITICAL backup bazy ${baza} nie istnieje&amp;quot;
  exit 1
fi&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/bash

baza=$1
size=$2

if [[ `du /mnt/data/backup/zapas/bazydanych/${baza}-$(date +%F).db.bz2 | cut -d$&amp;#039;\t&amp;#039; -f1` -ge ${size} ]] ; then
  echo &amp;quot;OK backup bazy ${baza}&amp;quot; ;
  exit 0
else
  echo &amp;quot;CRITICAL backup bazy ${baza} jest za maly&amp;quot;
  exit 1
fi&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;MariaDB&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mariadb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;4517-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:bash_slowowzmiennej&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>bash_slowowzmiennej</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:bash_slowowzmiennej&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ciag_znakow_w_zmiennej_basza&quot;&gt;Ciąg znaków w zmiennej basza&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Sprawdzanie, czy ciąg znaków występuje w zmiennej, lub wyniku polecenia:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;php_version=`/usr/bin/php -v`
if [[ ${php_version} == *&amp;#039;PHP 7.3&amp;#039;* ]] ; then echo &amp;#039;OK PHP-7.3&amp;#039; ; else echo &amp;quot;CRITICAL ${php_version}&amp;quot; ; fi&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:basz_zawijanie&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>basz_zawijanie</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:basz_zawijanie&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Odpowiedź na problem błędnego zawijania linii w Bashu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[ lukasz@GAZEvim .bashrc&lt;/pre&gt;

&lt;p&gt;
~.bashrc:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;green=&amp;quot;\001$(tput setaf 2)\002&amp;quot;
blue=&amp;quot;\001$(tput setaf 4)\002&amp;quot;
dim=&amp;quot;\001$(tput dim)\002&amp;quot;
reset=&amp;quot;\001$(tput sgr0)\002&amp;quot;
PS1=&amp;quot;$green\u@\h $blue $ \n  $green-&amp;gt;$reset  &amp;quot;
export PS1
unset green blue dim reset&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:brother1222&amp;rev=1751477012">
        <dc:format>text/html</dc:format>
        <dc:date>2025-07-02T17:23:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>brother1222</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:brother1222&amp;rev=1751477012</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;brother_hl1222we&quot;&gt;Brother HL1222WE&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Sterowniki dla Red Hata, Fedory i podobnych:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:hl1210wcupswrapper-3.0.1-1.i386.rpm&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:hl1210wcupswrapper-3.0.1-1.i386.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:hl1210wcupswrapper-3.0.1-1.i386.rpm&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:hl1210wlpr-3.0.1-1.i386.rpm&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:hl1210wlpr-3.0.1-1.i386.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:hl1210wlpr-3.0.1-1.i386.rpm&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Instalacja:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo rpm -Uvh hl1210w*
Sprawdzanie poprawności…           ################################# [100%]
Przygotowywanie…                    ################################# [100%]
Aktualizowanie/instalowanie…
   1:hl1210wlpr-3.0.1-1               ################################# [ 50%]
   2:hl1210wcupswrapper-3.0.1-1       ################################# [100%]
lpadmin -p HL1210W -E -v usb://Brother/HL-1210W%20series?serial=E76028F3X749559 -P /usr/share/ppd/brother/brother-HL1210W-cups-en.ppd
lpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS.&lt;/pre&gt;

&lt;p&gt;
Pulpit Gnome oraz Cups same zajmą się konfiguracją:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Abrother1222&amp;amp;media=wiki:drukarka1222.jpg&quot; class=&quot;media&quot; title=&quot;wiki:drukarka1222.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=186837&amp;amp;media=wiki:drukarka1222.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Na systemie CentOS 10 sytuacja nie jest już taka prosta. Trzeba skompilować i zainstalować poniższy kod:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:brlaser-master.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;wiki:brlaser-master.zip (34.9 KB)&quot;&gt;brlaser-master.zip&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cmake .
make
sudo make install    &lt;/pre&gt;

&lt;p&gt;
Po zastosowaniu powższego można zmienić sterownik drukarki na &lt;em&gt;Brother HL-1200 series, using brlaser v6&lt;/em&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Źródło: &lt;a href=&quot;https://support.brother.com/g/b/downloadtop.aspx?c=eu_ot&amp;amp;lang=en&amp;amp;prod=hl1222we_eu&quot; class=&quot;urlextern&quot; title=&quot;https://support.brother.com/g/b/downloadtop.aspx?c=eu_ot&amp;amp;lang=en&amp;amp;prod=hl1222we_eu&quot; rel=&quot;ugc nofollow&quot;&gt;https://support.brother.com/g/b/downloadtop.aspx?c=eu_ot&amp;amp;lang=en&amp;amp;prod=hl1222we_eu&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Źródło: &lt;a href=&quot;https://github.com/pdewacht/brlaser&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/pdewacht/brlaser&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/pdewacht/brlaser&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:centos_root_raid&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>centos_root_raid</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:centos_root_raid&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;root_na_raid_w_centos&quot;&gt;Root na raid w CentOS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Scenariusz:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; serwer z IP 192.168.1.100 z dwoma &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:zerowanie&quot; class=&quot;wikilink1&quot; title=&quot;wiki:zerowanie&quot; data-wiki-id=&quot;wiki:zerowanie&quot;&gt;wyzerowanymi dyskami&lt;/a&gt;,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; potrzebny jest CentOS 8 z partycją root na programowym raid 1.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h5 id=&quot;przygotowanie_hosta&quot;&gt;Przygotowanie hosta&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Należy uruchomić hosta używając Linux Rescue CD i przygotować macierz:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mdadm --create /dev/md0 --metadata=0.9 --level=1 --raid-devices=2 /dev/sda /dev/sdb&lt;/pre&gt;

&lt;p&gt;
Postępy w budowie macierzy można obejrzeć w pliku mdstat:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sdb[1] sda[0]
    244198464 blocks [2/2] [UU]
    [&amp;gt;....................]  resync =  1.9% (4682944/244198464)
finish=52.2min speed=76356K/sec bitmap: 2/2 pages [8KB], 65536KB chunk

unused devices: &amp;lt;none&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Dane o macierzy i jej ID są dostępne przez:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mdadm --detail --scan --verbose
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=0.90 UUID=fef2f68b:1a462c80:c44c77eb:7ee19756 devices=/dev/sda,/dev/sdb

# lsblk
NAME  MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
loop0   7:0    0 819.5M  1 loop  /run/archiso/sfs/airootfs
sda     8:0    0 232.9G  0 disk  
└─md0   9:0    0 232.9G  0 raid1 
sdb     8:16   0 232.9G  0 disk  
└─md0   9:0    0 232.9G  0 raid1 
sr0    11:0    1   871M  0 rom&lt;/pre&gt;

&lt;p&gt;
Dalej utworzenie partycji:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# fdisk /dev/md0

Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x64998720.

Command (m for help): o
Created a new DOS disklabel with disk identifier 0xfe784f57.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-488396927, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-488396927, default
488396927): +220G

Created a new partition 1 of type &amp;#039;Linux&amp;#039; and of size 220 GiB.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 
First sector (461375488-488396927, default 461375488): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (461375488-488396927,
default 488396927): +4G

Created a new partition 2 of type &amp;#039;Linux&amp;#039; and of size 4 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.


# lsblk
NAME      MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
loop0       7:0    0 819.5M  1 loop  /run/archiso/sfs/airootfs
sda         8:0    0 232.9G  0 disk  
└─md0       9:0    0 232.9G  0 raid1 
  ├─md0p1 259:0    0   220G  0 part  
  └─md0p2 259:1    0     4G  0 part  
sdb         8:16   0 232.9G  0 disk  
└─md0       9:0    0 232.9G  0 raid1 
  ├─md0p1 259:0    0   220G  0 part  
  └─md0p2 259:1    0     4G  0 part  
sr0        11:0    1   871M  0 rom   


# mkfs -t ext4 /dev/md0p1
mke2fs 1.44.5 (15-Dec-2018)
Creating filesystem with 57671680 4k blocks and 14417920 inodes
Filesystem UUID: 511d0d07-4d55-4b6c-939e-d23ae2da1ce0
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632,
2654208, 4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done     

# mkswap /dev/md0p2 
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=5667d007-0d3e-4b54-8a72-6ade52609adc&lt;/pre&gt;

&lt;p&gt;
Należy zamontować przyszłą partycję root w katalogu (na przykład) /mnt/centos8:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mkdir /mnt/centos8
# mount -t ext4 /dev/md0p1 /mnt/centos8&lt;/pre&gt;

&lt;p&gt;
Potem należy utworzyć hasło roota na Rescue CD:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# passwd
[wpisać]
[i potwierdzić]&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;instalacja_centosa&quot;&gt;Instalacja CentOSa&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Należy zainstalować CentOSa używając wyłącznie partycji root (bez /boot, /var, /home i podobnych) na wirtualce używając VirtualBoxa, lub podobnego oprogramowania. Serwer oraz wirtualka muszą się „widzieć” w sieci, na przykład będąc w tej samej sieci 192.168.1.0.
&lt;/p&gt;

&lt;p&gt;
Po instalacji CentOSa należy go zaktualizować oraz zainstalować dwa programy:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dnf update
dnf install rsync mdadm&lt;/pre&gt;

&lt;p&gt;
Następnie należy &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:slowniczek_rsync&quot; class=&quot;wikilink1&quot; title=&quot;wiki:slowniczek_rsync&quot; data-wiki-id=&quot;wiki:slowniczek_rsync&quot;&gt;skopiować&lt;/a&gt; zawartość partycji / na serwer:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# rsync -vaxAXHSz --delete / 192.168.1.100:/mnt/centos8/
The authenticity of host &amp;#039;192.168.1.100 (192.168.1.100)&amp;#039; can&amp;#039;t be
established. ECDSA key fingerprint is
SHA256:HukswAQlarthYqbpVHIHm80JaWHKX12AxgOn8UuKQxk. Are you sure you
want to continue connecting (yes/no/[fingerprint])? yes Warning:
Permanently added &amp;#039;192.168.1.100&amp;#039; (ECDSA) to the list of known hosts.
root@192.168.1.100&amp;#039;s password: [wpisać hasło roota ustawione w Rescue CD]
sending incremental file list
./
bin -&amp;gt; usr/bin
lib -&amp;gt; usr/lib
lib64 -&amp;gt; usr/lib64
sbin -&amp;gt; usr/sbin
[dużo różnych plików...]
var/yp/

sent 694,980,592 bytes  received 745,802 bytes  1,795,422.95 bytes/sec
total size is 1,558,934,091  speedup is 2.24&lt;/pre&gt;

&lt;p&gt;
Wirtualkę można w tym momencie wyłączyć.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;konfiguracja_centosa_na_serwerze&quot;&gt;Konfiguracja CentOSa na serwerze.&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Zachrootować się do CentOSa:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mount --types proc /proc /mnt/centos8/proc 
# mount --rbind /sys /mnt/centos8/sys
# mount --make-rslave /mnt/centos8/sys
# mount --rbind /dev /mnt/centos8/dev
# mount --make-rslave /mnt/centos8/dev
# chroot /mnt/centos8 /usr/bin/bash
# source /etc/profile&lt;/pre&gt;

&lt;p&gt;
Konfiguracja mdadm:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mdadm --detail --scan --verbose
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=0.90 UUID=fef2f68b:1a462c80:c44c77eb:7ee19756 devices=/dev/sda,/dev/sdb
# mdadm --detail --scan --verbose &amp;gt; /etc/mdadm.conf&lt;/pre&gt;

&lt;p&gt;
Linijka z partycją root w /etc/fstab (nie jest najważniejsza, ponieważ zajmie się tym initramfs, ale dla porządku):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/dev/md0p1 / ext4 defaults 1 1&lt;/pre&gt;

&lt;p&gt;
Konfiguracja gruba w /etc/default/grub z ID /dev/md0 skopiowanym z /etc/mdadm.conf
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;GRUB_TIMEOUT=8
GRUB_DISTRIBUTOR=&amp;quot;$(sed &amp;#039;s, release .*$,,g&amp;#039; /etc/system-release)&amp;quot;
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT=&amp;quot;console&amp;quot;
GRUB_CMDLINE_LINUX=&amp;quot;rd.md.uuid=611ab623:8961aa27:c44c77eb:7ee19756&amp;quot;
GRUB_DISABLE_RECOVERY=&amp;quot;true&amp;quot;
GRUB_ENABLE_BLSCFG=true&lt;/pre&gt;

&lt;p&gt;
Generowanie konfiguracji gruba w /boot oraz instalacja bootloadera na dyskach:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-install /dev/sda
grub2-install /dev/sdb&lt;/pre&gt;

&lt;p&gt;
Generowanie initramfs dla najnowszego dostępnego kernela:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# ls -al /boot/initramfs*
-rw-------. 1 root root 65603975 Nov  8 10:14 /boot/initramfs-0-rescue-fb59150a25934cfc8ccc2719ecb47222.img
-rw-------. 1 root root 28012365 Nov 18 15:21 /boot/initramfs-4.18.0-193.28.1.el8_2.x86_64.img
-rw-------. 1 root root 24421489 Nov  8 10:37 /boot/initramfs-4.18.0-193.el8.x86_64.img

# dracut -f /boot/initramfs-4.18.0-193.28.1.el8_2.x86_64.img 4.18.0-193.28.1.el8_2.x86_64&lt;/pre&gt;

&lt;p&gt;
Rescue CD nie rozumie SeLinuksa, więc pliki po rsyncu na serwerze nie mają odpowiednich „labelów”. Należy go &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:wlaczanie_selinux&quot; class=&quot;wikilink1&quot; title=&quot;wiki:wlaczanie_selinux&quot; data-wiki-id=&quot;wiki:wlaczanie_selinux&quot;&gt;tymczasowo wyłączyć&lt;/a&gt; w pliku /etc/sysconfig/selinux, gdyż w innym wypadku po uruchomieniu systemu partycja root będzie tylko do odczytu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SELINUX=disabled&lt;/pre&gt;

&lt;p&gt;
Wyjść z chroota, zrestartować serwer (pamiętać o wyjęciu nośnika z Rescue CD).
&lt;/p&gt;

&lt;p&gt;
Po ponownym uruchomieniu serwera należy zamienić nazwę pliku w /etc/sysconfig/network-scripts oraz nazwy interefejsu w nim skonfigurowanego, żeby odpowiadały nazwie interfejsu podanego przez:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# ip a&lt;/pre&gt;

&lt;p&gt;
oraz zrestartować NetworkManagera:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# systemctl restart NetworkManager&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:certyfikat_ssl_https&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>certyfikat_ssl_https</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:certyfikat_ssl_https&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;sprawdzenie_certyfikatu_ssl&quot;&gt;Sprawdzenie certyfikatu ssl&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Sprawdza kilka właściwości certyfikatu:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; subject,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; start date oraz expire date,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; issuer,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; wersja TLS (czasami).&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;curl --insecure -v https://domena.com/ 2&amp;gt;&amp;amp;1 | awk &amp;#039;BEGIN { cert=0 } /^\* SSL connection/ { cert=1 } /^\*/ { if (cert) print }&amp;#039;&lt;/pre&gt;
&lt;hr /&gt;

&lt;p&gt;
Czytanie certyfikatu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl x509 -noout -text -in certfile&lt;/pre&gt;

&lt;p&gt;
Czytanie klucza:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl rsa -noout -text -in keyfile&lt;/pre&gt;
&lt;hr /&gt;

&lt;p&gt;
Utworzenie własnego certyfikatu ważnego 300 lat:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl genrsa -out domena.pl.key
openssl req -new -key domena.pl.key -out domena.pl.csr
openssl x509 -req -days 111111 -in domena.pl.csr -signkey domena.pl.key -out domena.pl.crt&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:chroot&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>chroot</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:chroot&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;chroot_na_linuksie_z_systemd&quot;&gt;Chroot na Linuksie z systemd&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Założenia:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; kernel na hoście z Fedorą panikuje przy starcie,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; partycja root jest na LVM: /dev/mapper/stupka-root w formacie ext4,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; komputer jest uruchomiony z rescue CD w wersji 6.x&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Procedura:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vgchange -ay
mkdir /mnt/fedora
mount -t ext4 /dev/mapper/stupka-root /mnt/fedora
mount --types proc /proc /mnt/fedora/proc
mount --rbind /sys /mnt/fedora/sys
mount --make-rslave /mnt/fedora/sys
mount --rbind /dev /mnt/fedora/dev
mount --make-rslave /mnt/fedora/dev
chroot /mnt/fedora /usr/bin/bash
source /etc/profile&lt;/pre&gt;

&lt;p&gt;
Od tej chwili można pracować jako użytkownik root na zepsutej Fedorze.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:cron_gnome&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cron_gnome</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:cron_gnome&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Cron z zadaniami:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;16 16 * * 1-5 /usr/bin/rsync -vaxAXHSz --delete /home/lukasz/wazny_katalog/ login@domena.pl:/home/lukasz/dane/wazny_katalog/ &amp;amp;&amp;gt; /home/lukasz/programy/rsync/rsync.log

19 16 * * 1-5 cd /home/lukasz/programy/rsync ; /usr/bin/python3 powiadomienie.py &amp;amp;&amp;gt;/dev/null&lt;/pre&gt;

&lt;p&gt;
Skrypt powiadomienie.py informujący o rezultatach:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/env python3

from gi.repository import Notify
Notify.init(&amp;#039;Rsync plików&amp;#039;)

with open(&amp;#039;rsync.log&amp;#039;,&amp;#039;r&amp;#039;) as rsync_log:
  rsync_log_txt = rsync_log.read()
  if &amp;#039;failed&amp;#039; not in rsync_log_txt:
    Notify.Notification.new(&amp;#039;Przesyłanie plików OK&amp;#039;).show()
  else:
    Notify.Notification.new(&amp;#039;BŁĄD PRZESYŁANIA plików&amp;#039;).show()&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:cryptfsck&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cryptfsck</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:cryptfsck&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;naprawa_zaszyfrowanej_partycji_typu_ext4&quot;&gt;Naprawa zaszyfrowanej partycji typu ext4&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Po uruchomieniu systemu z jakiegoś live, np. Linux RescueCD:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cryptsetup luksOpen /dev/sda1 tajne
fsck.ext4 /dev/mapper/tajne&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:czytaniecrtkey&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>czytaniecrtkey</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:czytaniecrtkey&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;czytanie_certyfikatu&quot;&gt;Czytanie certyfikatu&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Czytanie certyfikatu
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl x509 -noout -text -in certfile&lt;/pre&gt;

&lt;p&gt;
Czytanie klucza:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl rsa -noout -text -in keyfile&lt;/pre&gt;

&lt;p&gt;
Warto sprawdzić modulus, czy jest taki sam.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:dell_perc&amp;rev=1706167802">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-25T07:30:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dell_perc</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:dell_perc&amp;rev=1706167802</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dell_perc_na_linuksie&quot;&gt;Dell Perc na Linuksie&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Programik do kontroli i przeglądu sprzętowego raida Dell dla Linuksa:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:perccli_7.1623.00_a11_linux.tar.gz&quot; class=&quot;media mediafile mf_gz&quot; title=&quot;wiki:perccli_7.1623.00_a11_linux.tar.gz (4.4 MB)&quot;&gt;perccli_7.1623.00_a11_linux.tar.gz&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Sprawdzony na Fedorze 35, 36, 37, 38, 39 oraz Red Hacie 8 ale na innych dystrybucjach też pewnie działa.
&lt;/p&gt;

&lt;p&gt;
Przykłady użycia:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
# /opt/MegaRAID/perccli/perccli64 show
CLI Version = 007.1623.0000.0000 May 17, 2021
Operating system = Linux 5.16.16-200.fc35.x86_64
Status Code = 0
Status = Success
Description = None

Number of Controllers = 1
Host Name = aegis.ping.local
Operating System  = Linux 5.16.16-200.fc35.x86_64

System Overview :
===============

-----------------------------------------------------------------------------
Ctl Model             Ports PDs DGs DNOpt VDs VNOpt BBU sPR DS EHS ASOs Hlth 
-----------------------------------------------------------------------------
  0 PERC6/iIntegrated     8   4   1     0   1     0 N/A On  2  N      0 Opt  
-----------------------------------------------------------------------------


# /opt/MegaRAID/perccli/perccli64 /c0 /eall /sall show all
CLI Version = 007.1623.0000.0000 May 17, 2021
Operating system = Linux 5.16.16-200.fc35.x86_64
Controller = 0
Status = Success
Description = Show Drive Information Succeeded.


Drive /c0/e32/s0 :
================

------------------------------------------------------------------------------
EID:Slt DID State DG       Size Intf Med SED PI SeSz Model            Sp Type 
------------------------------------------------------------------------------
32:0      0 Onln   0 418.625 GB SAS  HDD N   N  512B X411_HVIPC420A15 U  -    
------------------------------------------------------------------------------

EID=Enclosure Device ID|Slt=Slot No|DID=Device ID|DG=DriveGroup
DHS=Dedicated Hot Spare|UGood=Unconfigured Good|GHS=Global Hotspare
UBad=Unconfigured Bad|Sntze=Sanitize|Onln=Online|Offln=Offline|Intf=Interface
Med=Media Type|SED=Self Encryptive Drive|PI=Protection Info
SeSz=Sector Size|Sp=Spun|U=Up|D=Down|T=Transition|F=Foreign
UGUnsp=UGood Unsupported|UGShld=UGood shielded|HSPShld=Hotspare shielded
CFShld=Configured shielded|Cpybck=CopyBack|CBShld=Copyback Shielded
UBUnsp=UBad Unsupported|Rbld=Rebuild


Drive /c0/e32/s0 - Detailed Information :
=======================================

Drive /c0/e32/s0 State :
======================
Shield Counter = 0
Media Error Count = 0
Other Error Count = 0
Drive Temperature =  36C (96.80 F)
Predictive Failure Count = 0
S.M.A.R.T alert flagged by drive = No


Drive /c0/e32/s0 Device attributes :
==================================
SN = JYVDUT0J        
Manufacturer Id = NETAPP  
Model Number = X411_HVIPC420A15
NAND Vendor = NA
WWN = NA
Raw size = 419.186 GB [0x3465f870 Sectors]
Coerced size = 418.625 GB [0x34540000 Sectors]
Non Coerced size = 418.686 GB [0x3455f870 Sectors]
Device Speed = Unknown
Link Speed = Unknown
Write Cache = N/A
Logical Sector Size = 512B
Physical Sector Size = 512B
Connector Name = 

[...]
&lt;/pre&gt;

&lt;p&gt;
Źródło: &lt;a href=&quot;https://www.dell.com/support/kbdoc/en-us/000177280/how-to-use-the-poweredge-raid-controller-perc-command-line-interface-cli-utility-to-manage-your-raid-controller&quot; class=&quot;urlextern&quot; title=&quot;https://www.dell.com/support/kbdoc/en-us/000177280/how-to-use-the-poweredge-raid-controller-perc-command-line-interface-cli-utility-to-manage-your-raid-controller&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.dell.com/support/kbdoc/en-us/000177280/how-to-use-the-poweredge-raid-controller-perc-command-line-interface-cli-utility-to-manage-your-raid-controller&lt;/a&gt; .
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:dia&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dia</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:dia&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;pakiety_dia_dla_rhel8&quot;&gt;Pakiety Dia dla RHEL8&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Pakiety &lt;a href=&quot;http://dia-installer.de/&quot; class=&quot;urlextern&quot; title=&quot;http://dia-installer.de/&quot; rel=&quot;ugc nofollow&quot;&gt;Dia&lt;/a&gt; oraz libart_lgpl (brakująca zależność) dla RHEL8 i klonów, przebudowane z Fedory 34.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:dia.tar.gz&quot; class=&quot;media mediafile mf_gz&quot; title=&quot;wiki:dia.tar.gz (7.5 MB)&quot;&gt;dia.tar.gz&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:django_setup&amp;rev=1679838011">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-26T13:40:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>django_setup</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:django_setup&amp;rev=1679838011</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;konfiguracja_django&quot;&gt;Konfiguracja Django&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Na przykładzie Fedory (na CentOS jest tak samo) oraz MariaDB. Nazwę użytkownika w bazie danych najlepiej mieć taką samą, jak w /etc/passwd.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Konfiguracja Django&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;konfiguracja_django&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-182&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;baza_danych&quot;&gt;Baza danych&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# sudo dnf install mariadb mariadb-server mariadb-devel python3-devel
# sudo systemctl start mariadb
# sudo mysql_secure_installation
# mysql -u root -p
&amp;gt; create user &amp;#039;lukasz&amp;#039;@&amp;#039;localhost&amp;#039; identified by &amp;#039;tajnehaslo&amp;#039;;
&amp;gt; grant all privileges on *.* to &amp;#039;lukasz&amp;#039;@&amp;#039;localhost&amp;#039; with grant option;
&amp;gt; create user &amp;#039;project&amp;#039;@&amp;#039;localhost&amp;#039; identified by &amp;#039;tajnehaslo2&amp;#039;;
&amp;gt; create database project;
&amp;gt; grant all privileges on project.* to &amp;#039;project&amp;#039;@&amp;#039;localhost&amp;#039;;
&amp;gt; grant all privileges on test_project.* to &amp;#039;project&amp;#039;@&amp;#039;localhost&amp;#039;;
&amp;gt; exit;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Baza danych&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;baza_danych&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;183-739&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;virtualenv_oraz_pip&quot;&gt;Virtualenv oraz pip&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# mkdir -p project/app
# cd project
# python3 -m venv .
# source bin/activate
# pip install --upgrade pip
# pip install django mysqlclient
# cd app
# django-admin startproject project&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Virtualenv oraz pip&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;virtualenv_oraz_pip&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;740-970&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;settingspy&quot;&gt;settings.py&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Poprawić konfigurację dla bazy danych.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#DATABASES = {
#    &amp;#039;default&amp;#039;: {
#        &amp;#039;ENGINE&amp;#039;: &amp;#039;django.db.backends.sqlite3&amp;#039;,
#        &amp;#039;NAME&amp;#039;: os.path.join(BASE_DIR, &amp;#039;db.sqlite3&amp;#039;),
#    }
#}

DATABASES = {
    &amp;#039;default&amp;#039;: {
        &amp;#039;ENGINE&amp;#039;: &amp;#039;django.db.backends.mysql&amp;#039;,
        &amp;#039;NAME&amp;#039;: &amp;#039;project&amp;#039;,
        &amp;#039;USER&amp;#039;: &amp;#039;project&amp;#039;,
        &amp;#039;PASSWORD&amp;#039;: &amp;#039;tajnehaslo2&amp;#039;,
        &amp;#039;HOST&amp;#039;: &amp;#039;localhost&amp;#039;,   # Or an IP Address that your DB is hosted on
        &amp;#039;PORT&amp;#039;: &amp;#039;3306&amp;#039;,
    }
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;settings.py&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;settingspy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;971-1473&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;uruchomienie_testowej_strony&quot;&gt;Uruchomienie testowej strony&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# python manage.py runserver&lt;/pre&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Uruchomienie testowej strony&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;uruchomienie_testowej_strony&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1474-1551&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;django_i_replikacja_w_mariadb&quot;&gt;Django i replikacja w MariaDB&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Przy założeniu, że mamy dwie bazy danych w klasycznym układzie:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; primary - Rear/Write&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; replica - ReadOnly&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
który został opisany na &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:mariadb_replika&quot; class=&quot;wikilink1&quot; title=&quot;wiki:mariadb_replika&quot; data-wiki-id=&quot;wiki:mariadb_replika&quot;&gt;tej stronie&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
W katalogu z plikiem manage.py utworzyć plik dbroute.py o treści:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;import random
from django.conf import settings

class ReplicationRouter:
    def db_for_read(self, model, **hints):
        &amp;quot;&amp;quot;&amp;quot;
        Randomly pick a database to read from
        &amp;quot;&amp;quot;&amp;quot;
        return random.choice([key for key in settings.DATABASES])

    def db_for_write(self, model, **hints):
        &amp;quot;&amp;quot;&amp;quot;
        Always send write queries to the master database.
        &amp;quot;&amp;quot;&amp;quot;
        return &amp;#039;default&amp;#039;;

    def allow_relation(self, obj1, obj2, **hints):
        &amp;quot;&amp;quot;&amp;quot;
        This isn&amp;#039;t really applicable for this use-case.
        &amp;quot;&amp;quot;&amp;quot;
        return True

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        &amp;quot;&amp;quot;&amp;quot;
        Only allow migration operations on the master database, just in case.
        &amp;quot;&amp;quot;&amp;quot;
        if db == &amp;#039;default&amp;#039;:
            return True
        return None&lt;/pre&gt;

&lt;p&gt;
W pliku settings.py należy dodać linijkę 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DATABASE_ROUTERS = [&amp;#039;dbroute.ReplicationRouter&amp;#039;]&lt;/pre&gt;

&lt;p&gt;
oraz zmienić domyślny słownik DATABSES z Sqlite3 na Marię:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DATABASES = {
    &amp;#039;default&amp;#039;: {
        &amp;#039;ENGINE&amp;#039;: &amp;#039;django.db.backends.mysql&amp;#039;,
        &amp;#039;NAME&amp;#039;: &amp;#039;nazwabazydanych&amp;#039;,
        &amp;#039;USER&amp;#039;: &amp;#039;uzytkownik&amp;#039;,
        &amp;#039;PASSWORD&amp;#039;: &amp;#039;haslo&amp;#039;,
        &amp;#039;HOST&amp;#039;: &amp;#039;maria1.ping.local&amp;#039;,
        &amp;#039;PORT&amp;#039;: &amp;#039;3306&amp;#039;
    },
    &amp;#039;replica&amp;#039;: {
        &amp;#039;ENGINE&amp;#039;: &amp;#039;django.db.backends.mysql&amp;#039;,
        &amp;#039;NAME&amp;#039;: &amp;#039;nazwabazydanych&amp;#039;,
        &amp;#039;USER&amp;#039;: &amp;#039;uzytkownik&amp;#039;,
        &amp;#039;PASSWORD&amp;#039;: &amp;#039;haslo&amp;#039;,
        &amp;#039;HOST&amp;#039;: &amp;#039;maria2.ping.local&amp;#039;,
        &amp;#039;PORT&amp;#039;: &amp;#039;3306&amp;#039;
    },
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Django i replikacja w MariaDB&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;django_i_replikacja_w_mariadb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1552-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:django_tests&amp;rev=1670156255">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-04T12:17:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>django_tests</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:django_tests&amp;rev=1670156255</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;testy_w_django&quot;&gt;Testy w Django&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Poniżej plik tests.py przygotowany dla aplikacji polls z tutoriala do Django. Działa poprawnie w Django 3.1 oraz 4.0. Jedyna różnica w porównaniu z oryginałem to dodana funkcja fix_votes w modelu Choice:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;def fix_votes(self):
    elif self.votes == 0:
      self.votes = 0
      return True
    if self.votes &amp;lt; 0:
      self.votes = 0
      return True
    elif self.votes % (ceil(self.votes)-1) != 1:
      self.votes = ceil(self.votes)-1
      return True&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://docs.djangoproject.com/en/4.0/intro/tutorial01/&quot; class=&quot;urlextern&quot; title=&quot;https://docs.djangoproject.com/en/4.0/intro/tutorial01/&quot; rel=&quot;ugc nofollow&quot;&gt;https://docs.djangoproject.com/en/4.0/intro/tutorial01/&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;import datetime
from django.test import TestCase
from django.utils import timezone
from django.urls import reverse

# Create your tests here.

from .models import Question, Choice

# ---------------------------------------------
# --------- HELPERS ---------------------------
# ---------------------------------------------

def create_question(question_text,days):
  &amp;#039;&amp;#039;&amp;#039;
  Create question with with given &amp;quot;question_text&amp;quot;
  and puslished with &amp;quot;days&amp;quot; from now:
  + positive for questions puslished in the past,
  - negative for questions which will be published in the future.
  &amp;#039;&amp;#039;&amp;#039;
  time = timezone.now() + datetime.timedelta(days=days)
  return Question.objects.create(question_text=question_text, pub_date=time)

def create_choice(question, choice_text, votes):
  &amp;#039;&amp;#039;&amp;#039;
  Create choice for question with id &amp;quot;question&amp;quot;
  with given &amp;quot;answer_text&amp;quot; and &amp;quot;votes&amp;quot; number
  of initial votes.
  &amp;#039;&amp;#039;&amp;#039;
  return Choice.objects.create(
           question=question,
           choice_text=choice_text,
           votes=votes,
         )

# ---------------------------------------------
# --------- MODEL TESTS -----------------------
# ---------------------------------------------

class QuestionModelTest(TestCase):

  def test_question_text_attribute(self):
    &amp;#039;&amp;#039;&amp;#039;
    Test question_text attribute
    &amp;#039;&amp;#039;&amp;#039;
    question = Question(question_text = &amp;#039;Que?&amp;#039;)
    self.assertIs(question.question_text, &amp;#039;Que?&amp;#039;)

  def test_was_published_recently_with_future_question(self):
    &amp;#039;&amp;#039;&amp;#039;
    was_published_recently returns False for
    question published in the future
    &amp;#039;&amp;#039;&amp;#039;
    time = timezone.now() + datetime.timedelta(days=30)
    future_question = Question(pub_date = time)
    self.assertIs(future_question.was_published_recently(), False)

  def test_was_published_recently_with_old_question(self):
    &amp;#039;&amp;#039;&amp;#039;
    was_published_recently() returns False for questions whose pub_date
    is older than 1 day.
    &amp;#039;&amp;#039;&amp;#039;
    time = timezone.now() - datetime.timedelta(days=1, seconds=1)
    old_question = Question(pub_date=time)
    self.assertIs(old_question.was_published_recently(), False)

  def test_was_published_recently_with_recent_question(self):
    &amp;#039;&amp;#039;&amp;#039;
    was_published_recently() returns True for questions whose pub_date
    is within the last day.
    &amp;#039;&amp;#039;&amp;#039;
    time = timezone.now() - datetime.timedelta(hours=23, minutes=59, seconds=59)
    recent_question = Question(pub_date=time)
    self.assertIs(recent_question.was_published_recently(), True)

  def test_too_long_question_over_200_characters(self, toolong=&amp;#039;safe&amp;#039;):
    &amp;#039;&amp;#039;&amp;#039;
    question_text of lenght over 200 characters should be allowed by Django.
    &amp;#039;&amp;#039;&amp;#039;
    try:
      question = Question(question_text=&amp;#039;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&amp;#039;)
    except TypeError:
      pass
    self.assertIs(toolong, &amp;#039;safe&amp;#039;)


class ChoiceModelTest(TestCase):
  
  def test_choice_text_attribute(self):
    &amp;#039;&amp;#039;&amp;#039;
    Test question_text attribute
    &amp;#039;&amp;#039;&amp;#039;
    choice = Choice(choice_text = &amp;#039;that&amp;#039;)
    self.assertIs(choice.choice_text, &amp;#039;that&amp;#039;)

  def test_votes_attribute(self):
    &amp;#039;&amp;#039;&amp;#039;
    Checks Choice vote attribute.
    &amp;#039;&amp;#039;&amp;#039;
    votes_above_zero = Choice(votes=5)
    self.assertIs(votes_above_zero.votes, 5)

  def test_fix_votes_with_negative_votes_value(self):
    &amp;#039;&amp;#039;&amp;#039;
    fix_votes() should return 0 votes for choice
    instance with -3 votes (which is below zero)
    &amp;#039;&amp;#039;&amp;#039;
    votes_below_zero = Choice(votes=-3)
    votes_below_zero.fix_votes()
    self.assertIs(votes_below_zero.votes, 0)

  def test_fix_votes_with_good_votes_value(self):
    &amp;#039;&amp;#039;&amp;#039;
    fix_votes() should return 3 votes for choice
    instance with 3 votes
    &amp;#039;&amp;#039;&amp;#039;
    votes_below_zero = Choice(votes=3)
    votes_below_zero.fix_votes()
    self.assertIs(votes_below_zero.votes, 3)

  def test_fix_votes_with_zero_votes_value(self):
    &amp;#039;&amp;#039;&amp;#039;
    fix_votes() should return 0 votes for choice
    instance with 0 votes
    &amp;#039;&amp;#039;&amp;#039;
    votes_below_zero = Choice(votes=0)
    votes_below_zero.fix_votes()
    self.assertIs(votes_below_zero.votes, 0)

  def test_fix_votes_with_float_votes(self):
    &amp;#039;&amp;#039;&amp;#039;
    fix_votes() should return 4 votes for choice
    instance with 4.7 votes
    &amp;#039;&amp;#039;&amp;#039;
    votes_float = Choice(votes=4.7)
    votes_float.fix_votes()
    self.assertIs(votes_float.votes, 4)

  def test_too_long_choice_over_200_characters(self, toolong=&amp;#039;safe&amp;#039;):
    &amp;#039;&amp;#039;&amp;#039;
    choice_text of over 200 characters long should not be allowed by Django.
    &amp;#039;&amp;#039;&amp;#039;
    try:
      choice = Choice(choice_text=&amp;#039;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&amp;#039;)
    except TypeError:
      pass
    self.assertIs(toolong, &amp;#039;safe&amp;#039;)


# ---------------------------------------------
# --------- VIEW TESTS ------------------------
# ---------------------------------------------

class QuestionIndexTestView(TestCase):

  def test_no_question(self):
    &amp;#039;&amp;#039;&amp;#039;
    If no questions exists, view should return appropriate message.
    &amp;#039;&amp;#039;&amp;#039;
    response = self.client.get(reverse(&amp;#039;polls:index&amp;#039;))
    self.assertEqual(response.status_code, 200)
    self.assertContains(response, &amp;quot;No polls are available&amp;quot;)
    self.assertQuerysetEqual(response.context[&amp;#039;latest_question_list&amp;#039;], [])
  
  def test_past_question(self):
    &amp;#039;&amp;#039;&amp;#039;
    Question with the past publication date have to be displayed on the index page.
    &amp;#039;&amp;#039;&amp;#039;
    create_question(&amp;quot;Can I have a test?&amp;quot;, days=-30)
    response = self.client.get(reverse(&amp;#039;polls:index&amp;#039;)) 
    self.assertEqual(response.status_code, 200)
    self.assertContains(response, &amp;quot;Can I have a test?&amp;quot;)
    self.assertQuerysetEqual(response.context[&amp;#039;latest_question_list&amp;#039;],
                          [&amp;quot;&amp;lt;Question: Can I have a test?&amp;gt;&amp;quot;])

  def test_future_question(self):
    &amp;#039;&amp;#039;&amp;#039;
    Question with the future publication date should not be listed at index page.
    &amp;#039;&amp;#039;&amp;#039;
    create_question(&amp;quot;Back from the future?&amp;quot;, days=1)
    response = self.client.get(reverse(&amp;#039;polls:index&amp;#039;))
    self.assertEqual(response.status_code, 200)
    self.assertContains(response, &amp;quot;No polls are available&amp;quot;)
    self.assertQuerysetEqual(response.context[&amp;#039;latest_question_list&amp;#039;], [])

  def test_past_and_future_question(self):
    &amp;#039;&amp;#039;&amp;#039;
    Only past question should be displayed on the index page.
    &amp;#039;&amp;#039;&amp;#039;
    create_question(&amp;quot;Can I have a test?&amp;quot;, days=-30)
    create_question(&amp;quot;Back from the future?&amp;quot;, days=1)
    response = self.client.get(reverse(&amp;#039;polls:index&amp;#039;)) 
    self.assertEqual(response.status_code, 200)
    self.assertContains(response, &amp;quot;Can I have a test?&amp;quot;)
    self.assertQuerysetEqual(response.context[&amp;#039;latest_question_list&amp;#039;],
                          [&amp;quot;&amp;lt;Question: Can I have a test?&amp;gt;&amp;quot;])

  def test_two_past_questions(self):
    &amp;#039;&amp;#039;&amp;#039;
    Both past questions should be
    displayed on the index page.
    &amp;#039;&amp;#039;&amp;#039;
    create_question(&amp;quot;Can I have a first test?&amp;quot;, days=-30)
    create_question(&amp;quot;Can I have a second test?&amp;quot;, days=-20)
    response = self.client.get(reverse(&amp;#039;polls:index&amp;#039;)) 
    self.assertEqual(response.status_code, 200)
    self.assertContains(response, &amp;quot;Can I have a first test?&amp;quot;)
    self.assertQuerysetEqual(response.context[&amp;#039;latest_question_list&amp;#039;],
                          [&amp;quot;&amp;lt;Question: Can I have a second test?&amp;gt;&amp;quot;,
                           &amp;quot;&amp;lt;Question: Can I have a first test?&amp;gt;&amp;quot;,
                          ])

class QuestionDetailViewTest(TestCase):
  
  def test_future_question_status_code(self):
    &amp;#039;&amp;#039;&amp;#039;
    Detail view of question from future should return 404.
    &amp;#039;&amp;#039;&amp;#039;
    future_question = create_question(question_text=&amp;#039;Future?&amp;#039;, days=5)
    url = reverse(&amp;#039;polls:detail&amp;#039;, args=(future_question.id,))
    response = self.client.get(url)
    self.assertEqual(response.status_code, 404)

  def test_past_question_status_code(self):
    &amp;#039;&amp;#039;&amp;#039;
    Detail view of question from the past should return 200.
    &amp;#039;&amp;#039;&amp;#039;
    past_question = create_question(question_text=&amp;#039;Past?&amp;#039;, days=-5)
    url = reverse(&amp;#039;polls:detail&amp;#039;, args=(past_question.id,))
    response = self.client.get(url)
    self.assertEqual(response.status_code, 200)

  def test_past_question_response(self):
    &amp;#039;&amp;#039;&amp;#039;
    Detail view of question from the past should return question_text.
    &amp;#039;&amp;#039;&amp;#039;
    past_question = create_question(question_text=&amp;#039;Past?&amp;#039;, days=-5)
    url = reverse(&amp;#039;polls:detail&amp;#039;, args=(past_question.id,))
    response = self.client.get(url)
    self.assertContains(response, past_question.question_text)&lt;/pre&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Testy w Django&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;testy_w_django&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-9129&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;zapisywanie_do_bazy_danych_w_testach_django&quot;&gt;Zapisywanie do bazy danych w testach Django&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Dodatkowa baza danych w pliku settings.py. Ważne jest, by baza wykorzystywana do testów miała zdefiniowaną samę siebie jako bazę testową.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DATABASES = {
    &amp;#039;default&amp;#039;: {
        &amp;#039;ENGINE&amp;#039;: &amp;#039;django.db.backends.mysql&amp;#039;,
        &amp;#039;NAME&amp;#039;: &amp;#039;produkcja&amp;#039;,
        &amp;#039;USER&amp;#039;: &amp;#039;produkcja&amp;#039;,
        &amp;#039;PASSWORD&amp;#039;: &amp;#039;qwerty123&amp;#039;,
        &amp;#039;HOST&amp;#039;: &amp;#039;localhost&amp;#039;,   # Or an IP Address that your DB is hosted on
        &amp;#039;PORT&amp;#039;: &amp;#039;3306&amp;#039;,
      },
    &amp;#039;TEST&amp;#039;: {
        &amp;#039;ENGINE&amp;#039;: &amp;#039;django.db.backends.mysql&amp;#039;,
        &amp;#039;NAME&amp;#039;: &amp;#039;testowa&amp;#039;,
        &amp;#039;USER&amp;#039;: &amp;#039;testowa&amp;#039;,
        &amp;#039;PASSWORD&amp;#039;: &amp;#039;qwerty234&amp;#039;,
        &amp;#039;HOST&amp;#039;: &amp;#039;localhost&amp;#039;,   # Or an IP Address that your DB is hosted on
        &amp;#039;PORT&amp;#039;: &amp;#039;3306&amp;#039;,
        &amp;#039;TEST&amp;#039;: {&amp;#039;NAME&amp;#039;: &amp;#039;testowa&amp;#039;}
    }
}&lt;/pre&gt;

&lt;p&gt;
W pliku tests.py należy utworzyć klasę dziecziczącą po TestCase i zdefiniować używaną bazę danych. Nazwa klasy może być dowolna:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;class TestCaseD(TestCase):
  databases = {&amp;#039;default&amp;#039; ,&amp;#039;TEST&amp;#039;}&lt;/pre&gt;

&lt;p&gt;
Wszystkie testy muszą być egzamplarzami klasy TestCaseD.
&lt;/p&gt;

&lt;p&gt;
Wszystkie „ręczne” zapisy do bazy danych w pliku (lub plikach) tests.py należy opatrzyć parametrem &lt;em&gt;using&lt;/em&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jakis_obiekt.save(using=&amp;#039;TEST&amp;#039;)&lt;/pre&gt;

&lt;p&gt;
Należy utworzyć bazę danych &lt;em&gt;testowa&lt;/em&gt;, użytkownika &lt;em&gt;testowa&lt;/em&gt; oraz nadać mu pełne uprawnienia do wszystkich tabel.
&lt;/p&gt;

&lt;p&gt;
Teraz można uruchomić testy. Agrument &lt;em&gt;–keepdb&lt;/em&gt; jest opcjonalny i pozwala na przejrzenie zawartości bazy danych &lt;em&gt;testowa&lt;/em&gt; po zakończeniu testów automatycznych. Oczekiwany efekt:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;python manage.py migrate --database TEST
[Applying contenttypes.0001_initial... OK] [...]

python manage.py test --debug-mode --keepdb
Found 18 test(s).
Using existing test database for alias &amp;#039;default&amp;#039;...
Using existing test database for alias &amp;#039;TEST&amp;#039;...
System check identified no issues (0 silenced).
..........
........
----------------------------------------------------------------------
Ran 18 tests in 6.086s

OK
Preserving test database for alias &amp;#039;default&amp;#039;...
Preserving test database for alias &amp;#039;TEST&amp;#039;...&lt;/pre&gt;

&lt;p&gt;
Po każdym wykonaniu testów bez parametru &lt;em&gt;–keepdb&lt;/em&gt; należy ponownie utworzyć testową bazę danych oraz wykonać migrację.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Zapisywanie do bazy danych w testach Django&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zapisywanie_do_bazy_danych_w_testach_django&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;9130-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:dnf_makecache&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dnf_makecache</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:dnf_makecache&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Wyłączanie okresowego odświeżania cache dnf, by zaoszczędzić łącze:
&lt;/p&gt;

&lt;p&gt;
Dla Fedory:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl mask dnf-makecache
systemctl mask dnf-makecache.timer&lt;/pre&gt;

&lt;p&gt;
Dla CentOSa
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl mask yum-makecache
systemctl mask yum-makecache.timer&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:dnf_moduly&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dnf_moduly</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:dnf_moduly&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;moduly_w_dnf&quot;&gt;Moduły w dnf&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Na przykładzie zmiany modułu PHP 7.2 na PHP 7.3 w CentOS 8.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dnf module list | grep php&lt;/pre&gt;

&lt;p&gt;
Moduł w wersji &lt;em&gt;devel&lt;/em&gt; zawiera wszystkie pakiety, więc jest najwygodniejszy.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dnf module enable php:7.3/devel
dnf install httpd php mod_php php-mysqli&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:dnf&amp;rev=1714850069">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-04T19:14:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dnf</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:dnf&amp;rev=1714850069</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dnf_-_roznosci&quot;&gt;DNF - różności&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Inne artykuły o DNF:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:dnf_moduly&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dnf_moduly&quot; data-wiki-id=&quot;wiki:dnf_moduly&quot;&gt;Moduły w dnf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:dnf_makecache&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dnf_makecache&quot; data-wiki-id=&quot;wiki:dnf_makecache&quot;&gt;Wyłączenie Makecache&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DNF - r\u00f3\u017cno\u015bci&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dnf_-_roznosci&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-151&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;klonowanie_calego_repozytorium&quot;&gt;Klonowanie całego repozytorium&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Przygotowanie klona najpotrzebniejszych repozytoriów dla CentOS 9, które wystawimy innym centosom. Na hoście z CentOS 9 należy wykonać reposync.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dnf reposync -p /mnt/repo/centos9/baseos/ --repoid=baseos --download-metadata
dnf reposync -p /mnt/repo/centos9/crb/ --repoid=crb --download-metadata
dnf reposync -p /mnt/repo/centos9/appstream/ --repoid=appstream --download-metadata&lt;/pre&gt;

&lt;p&gt;
Zajmują łącznie około 100 gigabajtów.
&lt;/p&gt;

&lt;p&gt;
Przykład vhosta dla Apache, który wystawi powyższe przez http:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;Virtualhost *:2221&amp;gt;
  ServerName repo.ping.local
  DocumentRoot /mnt/repo/centos9

  &amp;lt;Directory /mnt/repo/centos9&amp;gt;
    AllowOverride All
    Require all granted
    Options +Indexes
  &amp;lt;/Directory&amp;gt;

&amp;lt;/Virtualhost&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Konfiguracja dnf na innych hostach, które mogą korzystać z tych repozytoriów:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# grep -R &amp;#039;repo.ping.local&amp;#039; /etc/yum.repos.d/
/etc/yum.repos.d/centos.repo:baseurl=http://repo.ping.local:2221/baseos/baseos/
/etc/yum.repos.d/centos.repo:baseurl=http://repo.ping.local:2221/appstream/appstream/
/etc/yum.repos.d/centos.repo:baseurl=http://repo.ping.local:2221/crb/crb/&lt;/pre&gt;

&lt;p&gt;
Trzeba zakomentować linijki rozpoczynające się od &lt;em&gt;metalink&lt;/em&gt; oraz &lt;em&gt;baseurl=[cośinnego]&lt;/em&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Klonowanie ca\u0142ego repozytorium&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;klonowanie_calego_repozytorium&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;152-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:dokuwiki&amp;rev=1707739749">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-12T12:09:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dokuwiki</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:dokuwiki&amp;rev=1707739749</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dokuwiki&quot;&gt;DokuWiki&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/wiki%3Adokuwiki&quot; class=&quot;media&quot; title=&quot;https://www.dokuwiki.org/wiki%3Adokuwiki&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; DokuWiki is a simple to use and highly versatile Open Source &lt;a href=&quot;https://en.wikipedia.org/wiki/wiki&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/wiki&quot;&gt;wiki&lt;/a&gt; software that doesn&amp;#039;t require a database. It is loved by users for its clean and readable &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:syntax&quot; class=&quot;wikilink1&quot; title=&quot;wiki:syntax&quot; data-wiki-id=&quot;wiki:syntax&quot;&gt;syntax&lt;/a&gt;. The ease of maintenance, backup and integration makes it an administrator&amp;#039;s favorite. Built in &lt;a href=&quot;https://www.dokuwiki.org/acl&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/acl&quot;&gt;access controls&lt;/a&gt; and &lt;a href=&quot;https://www.dokuwiki.org/auth&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/auth&quot;&gt;authentication connectors&lt;/a&gt; make DokuWiki especially useful in the enterprise context and the large number of &lt;a href=&quot;https://www.dokuwiki.org/plugins&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/plugins&quot;&gt;plugins&lt;/a&gt; contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.
&lt;/p&gt;

&lt;p&gt;
Read the &lt;a href=&quot;https://www.dokuwiki.org/manual&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/manual&quot;&gt;DokuWiki Manual&lt;/a&gt; to unleash the full power of DokuWiki.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DokuWiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-704&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;download&quot;&gt;Download&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki is available at &lt;a href=&quot;https://download.dokuwiki.org/&quot; class=&quot;urlextern&quot; title=&quot;https://download.dokuwiki.org/&quot; rel=&quot;ugc nofollow&quot;&gt;https://download.dokuwiki.org/&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Download&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;download&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;705-784&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;read_more&quot;&gt;Read More&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
All documentation and additional information besides the &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:syntax&quot; class=&quot;wikilink1&quot; title=&quot;wiki:syntax&quot; data-wiki-id=&quot;wiki:syntax&quot;&gt;syntax description&lt;/a&gt; is maintained in the DokuWiki at &lt;a href=&quot;https://www.dokuwiki.org/&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/&quot;&gt;www.dokuwiki.org&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;About DokuWiki&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/features&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/features&quot;&gt;A feature list&lt;/a&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/users&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/users&quot;&gt;Happy Users&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/press&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/press&quot;&gt;Who wrote about it&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/blogroll&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/blogroll&quot;&gt;What Bloggers think&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.wikimatrix.org/show/DokuWiki&quot; class=&quot;urlextern&quot; title=&quot;https://www.wikimatrix.org/show/DokuWiki&quot; rel=&quot;ugc nofollow&quot;&gt;Compare it with other wiki software&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;Installing DokuWiki&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/requirements&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/requirements&quot;&gt;System Requirements&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://download.dokuwiki.org/&quot; class=&quot;urlextern&quot; title=&quot;https://download.dokuwiki.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Download DokuWiki&lt;/a&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/changes&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/changes&quot;&gt;Change Log&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/Install&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/Install&quot;&gt;How to install or upgrade&lt;/a&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/config&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/config&quot;&gt;Configuration&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;Using DokuWiki&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/syntax&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/syntax&quot;&gt;Wiki Syntax&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/manual&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/manual&quot;&gt;The manual&lt;/a&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/FAQ&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/FAQ&quot;&gt;Frequently Asked Questions (FAQ)&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/glossary&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/glossary&quot;&gt;Glossary&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;Customizing DokuWiki&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/tips&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/tips&quot;&gt;Tips and Tricks&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/Template&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/Template&quot;&gt;How to create and use templates&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/plugins&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/plugins&quot;&gt;Installing plugins&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/development&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/development&quot;&gt;Development Resources&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;DokuWiki Feedback and Community&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/newsletter&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/newsletter&quot;&gt;Subscribe to the newsletter&lt;/a&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/mailinglist&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/mailinglist&quot;&gt;Join the mailing list&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://forum.dokuwiki.org&quot; class=&quot;urlextern&quot; title=&quot;https://forum.dokuwiki.org&quot; rel=&quot;ugc nofollow&quot;&gt;Check out the user forum&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/irc&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/irc&quot;&gt;Talk to other users in the IRC channel&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/splitbrain/dokuwiki/issues&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/splitbrain/dokuwiki/issues&quot; rel=&quot;ugc nofollow&quot;&gt;Submit bugs and feature wishes&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/thanks&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/thanks&quot;&gt;Some humble thanks&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Read More&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;read_more&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;785-2217&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;copyright&quot;&gt;Copyright&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
2004-2020 © Andreas Gohr &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; and the DokuWiki Community
&lt;/p&gt;

&lt;p&gt;
The DokuWiki engine is licensed under &lt;a href=&quot;https://www.gnu.org/licenses/gpl.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.gnu.org/licenses/gpl.html&quot; rel=&quot;ugc nofollow&quot;&gt;GNU General Public License&lt;/a&gt; Version 2. If you use DokuWiki in your company, consider &lt;a href=&quot;https://www.dokuwiki.org/donate&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/donate&quot;&gt;donating&lt;/a&gt; a few bucks &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/wink.svg&quot; class=&quot;icon smiley&quot; alt=&quot;;-)&quot; /&gt;.
&lt;/p&gt;

&lt;p&gt;
Not sure what this means? See the &lt;a href=&quot;https://www.dokuwiki.org/faq%3Alicense&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/faq%3Alicense&quot;&gt;FAQ on the Licenses&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Copyright&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;copyright&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2218-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Please do not contact me for help and support – use the &lt;a href=&quot;https://www.dokuwiki.org/mailinglist&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/mailinglist&quot;&gt;mailinglist&lt;/a&gt; or &lt;a href=&quot;https://forum.dokuwiki.org&quot; class=&quot;urlextern&quot; title=&quot;https://forum.dokuwiki.org&quot; rel=&quot;ugc nofollow&quot;&gt;forum&lt;/a&gt; instead&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:dracut_ze_wszystkim&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dracut_ze_wszystkim</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:dracut_ze_wszystkim&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dracut_i_wszystko_w_initramfs&quot;&gt;Dracut i wszystko w initramfs&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Czasami, na potrzeby przeniesienia systemu na inny host, zwykłe przebudowanie initramfs nie wystarczy. Zdarza się to na przykład, kiedy na nowym hoście partycja root jest na lvm, a na starym tak nie było. Na potrzeby pierwszego uruchomienia po migracji można zbudować initramfs ze wszystkimi modułami.
&lt;/p&gt;

&lt;p&gt;
Na przykładzie kernela 4.18.0-240.15.1.el8_3.x86_64:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dracut -f --no-hostonly /boot/initramfs-4.18.0-240.15.1.el8_3.x86_64.img 4.18.0-240.15.1.el8_3.x86_64&lt;/pre&gt;

&lt;p&gt;
Po udanym uruchomieniu systemu na nowym hoście można ponownie przebudować initamfs bez przełącznika &lt;em&gt;–no-hostonly&lt;/em&gt;, żeby był mniejszy.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:dracut&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dracut</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:dracut&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dracut_w_trybie_rescue&quot;&gt;Dracut w trybie rescue&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Scenariusz:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; stało się coś złego podczas aktualizacji systemu,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; po restarcie kernel panikuje.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
To najczęściej znaczy, że dracut nie zdążył zrobić initramfsa. Należy uruchomić system z RescueCD, albo w udostępnionym przez dostawcę trybie rescue. Tutaj dla przykładu OVH:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Czyszczenie                    : gnutls-3.6.13-1.fc32.x86_64                          87/88 
Wykonywanie skryptu            : dbus-broker-22-1.fc32.x86_64                         88/88 
Czyszczenie                    : dbus-broker-22-1.fc32.x86_64                         88/88 
Wykonywanie skryptu            : dbus-broker-22-1.fc32.x86_64                         88/88 
Wykonywanie skryptu            : kernel-core-5.6.12-300.fc32.x86_64                   88/88 
Wykonywanie skryptu            : authselect-libs-1.2.1-1.fc32.x86_64                  88/88 
Wykonywanie skryptu            : firewalld-0.8.2-3.fc32.noarch                        88/88 
Wykonywanie skryptu            : dbus-broker-22-1.fc32.x86_64                         88/88 
client_loop: send disconnect: Broken pipe&lt;/pre&gt;

&lt;p&gt;
Tutaj nastąpiła zwiecha systemu. Trzeba zrestartować hosta w trybuie rescue i zalogować się jako root z hasłem wysłanym przez email.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh ip.ip.ip.ip -l root&lt;/pre&gt;

&lt;p&gt;
Teraz należy zachrootować się do wadliwego systemu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;root@rescue-pro:~# mount --types proc /proc /mnt/sdb1/proc
root@rescue-pro:~# mount --rbind /sys /mnt/sdb1/sys
root@rescue-pro:~# mount --make-rslave /mnt/sdb1/sys
root@rescue-pro:~# mount --rbind /dev /mnt/sdb1/dev
root@rescue-pro:~# mount --make-rslave /mnt/sdb1/dev
root@rescue-pro:~# chroot /mnt/sdb1 /usr/bin/bash
# source /etc/profile&lt;/pre&gt;

&lt;p&gt;
Sprawdzić najnowszy kernel:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# ls -al /boot
[...]
initramfs-5.6.12-300.fc32.x86_64.img
[...]&lt;/pre&gt;

&lt;p&gt;
Wygenerować initramfs:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# dracut -f /boot/initramfs-5.6.12-300.fc32.x86_64.img 5.6.12-300.fc32.x86_64&lt;/pre&gt;

&lt;p&gt;
Może pojawić się ostrzeżenie &lt;em&gt;dracut: No &amp;#039;/dev/log&amp;#039; or &amp;#039;logger&amp;#039; included for syslog logging&lt;/em&gt;, ale nie trzeba nim się przejmować. Za pomocą &lt;em&gt;exit&lt;/em&gt; należy wyjść z chroota i zresetować serwer klikając na stronce OVH. 
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:evolution_reply&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>evolution_reply</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:evolution_reply&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;naglowki_odpowiedzi_w_evolution&quot;&gt;Nagłówki odpowiedzi w Evolution.&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Zmiana nagłówków odpowiedzi na angielskie. W dconf zmienić wartość &lt;em&gt;/org/gnome/evolution/mail/composer-message-attribution&lt;/em&gt; na
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;On ${Year}-${Month}-${Day} at ${24Hour}:${Minute} ${TimeZone}, ${Sender} wrote:&lt;/pre&gt;

&lt;p&gt;
Żródło - &lt;a href=&quot;https://help.gnome.org/users/evolution/stable/mail-composer-change-quotation-string.html.en&quot; class=&quot;urlextern&quot; title=&quot;https://help.gnome.org/users/evolution/stable/mail-composer-change-quotation-string.html.en&quot; rel=&quot;ugc nofollow&quot;&gt;https://help.gnome.org/users/evolution/stable/mail-composer-change-quotation-string.html.en&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:fail2ban&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>fail2ban</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:fail2ban&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;fail2ban&quot;&gt;Fail2ban&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Fail2ban&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fail2ban&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-24&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;konfiguracja_jaili&quot;&gt;Konfiguracja jaili&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Plik /etc/fail2ban/jail.local
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[sshd]
mode      = aggressive
enabled   = true
port      = ssh
logpath   = %(sshd_log)s
backend   = %(sshd_backend)s
findtime  = 10m
maxretry  = 3
bantime   = 1h
banaction = iptables-multiport

[hosting-auth]
mode      = agressive
enabled   = true
port      = http,https
backend   = auto
filter    = wp-auth
logpath   = /var/log/httpd/strony-access
findtime  = 10m
maxretry  = 5
bantime   = 1h
banaction = iptables-multiport

[database-auth]
mode      = agressive
enabled   = true
port      = http,https
backend   = auto
filter    = myadmin-auth
logpath   = /var/log/httpd/strony-access
findtime  = 10m
maxretry  = 5
bantime   = 1h
banaction = iptables-multiport

[hosting-notfound]
mode      = agressive
enabled   = true
port      = http,https
backend   = auto
filter    = 404notfound
logpath   = /var/log/httpd/strony-access
findtime  = 10m
maxretry  = 20
bantime   = 1h
banaction = iptables-multiport

[hosting-recidive]
enabled = true
logpath = /var/log/fail2ban.log
backend   = auto
filter = recidive
findtime = 1d
maxretry = 4
bantime = 366d
banaction = iptables-multiport&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Konfiguracja jaili&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;konfiguracja_jaili&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;25-1180&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;konfiguracja_filtrow&quot;&gt;Konfiguracja filtrów&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Plik /etc/fail2ban/filter.d/
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# -----------------------------------------------------
# Logowanie do witryn obejmujace:
# - htpasswd,
# - logowanie do kokpitu Worpressa.

# Przykladowe linijki z access_log, ktore beda podbijaly licznik:
#strona.pl ip.ip.ip.ip - - [21/Jun/2021:11:08:23 +0200] &amp;quot;POST /wp-login.php HTTP/1.1&amp;quot; 200 8993 &amp;quot;https://strona.pl/wp-login.php&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0&amp;quot;
#strona.pl ip.ip.ip.ip - - [10/Aug/2021:15:33:37 +0200] &amp;quot;GET /wp-admin/ HTTP/1.1&amp;quot; 401 381 &amp;quot;-&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0&amp;quot;
# -----------------------------------------------------

[Definition]

failregex = ^mojastrona1\.baszarek\.pl &amp;lt;HOST&amp;gt; .* &amp;quot;(GET|POST|HEAD) .* HTTP.*&amp;quot; 401 .*$
            ^mojastrona1\.baszarek\.pl &amp;lt;HOST&amp;gt; .* &amp;quot;POST \/wp-login\.php HTTP.*&amp;quot; 200 .*$
            ^mojastrona2\.baszarek\.pl &amp;lt;HOST&amp;gt; .* &amp;quot;(GET|POST|HEAD) .* HTTP.*&amp;quot; 401 .*$
            ^mojastrona2\.baszarek\.pl &amp;lt;HOST&amp;gt; .* &amp;quot;POST \/wp-login\.php HTTP.*&amp;quot; 200 .*$
            ^mojastrona3\.baszarek\.pl &amp;lt;HOST&amp;gt; .* &amp;quot;(GET|POST|HEAD) .* HTTP.*&amp;quot; 401 .*$
            ^mojastrona3\.baszarek\.pl &amp;lt;HOST&amp;gt; .* &amp;quot;POST \/wp-login\.php HTTP.*&amp;quot; 200 .*$
            ^mojastrona4\.baszarek\.pl &amp;lt;HOST&amp;gt; .* &amp;quot;(GET|POST|HEAD) .* HTTP.*&amp;quot; 401 .*$
            ^mojastrona4\.baszarek\.pl &amp;lt;HOST&amp;gt; .* &amp;quot;POST \/wp-login\.php HTTP.*&amp;quot; 200 .*$

# Wyjatki
ignoreregex = .*(111\.111\.111\.111)&lt;/pre&gt;

&lt;p&gt;
Plik /etc/fail2ban/filter.d/
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# -----------------------------------------------------
# Powtarzajece sie bledy 404, wskazujace na szukanie:
# - /.git/config,
# - /phpmyadmin,
# - itp...
#
# Przykladowe linijki z access_log, ktore beda podbijaly licznik:
#strona.pl ip.ip.ip.ip - - [10/Aug/2021:16:01:09 +0200] &amp;quot;GET /.git/config HTTP/1.1&amp;quot; 404 29291 &amp;quot;-&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0&amp;quot;
# -----------------------------------------------------

[Definition]

failregex = ^mojastrona1\.baszarek\.pl &amp;lt;HOST&amp;gt; .* &amp;quot;GET .* HTTP.*&amp;quot; 404 .*$
            ^mojastrona2\.baszarek\.pl &amp;lt;HOST&amp;gt; .* &amp;quot;GET .* HTTP.*&amp;quot; 404 .*$
            ^mojastrona3\.baszarek\.pl &amp;lt;HOST&amp;gt; .* &amp;quot;GET .* HTTP.*&amp;quot; 404 .*$
            ^mojastrona4\.baszarek\.pl &amp;lt;HOST&amp;gt; .* &amp;quot;GET .* HTTP.*&amp;quot; 404 .*$

# Wyjatki
ignoreregex = .*(111\.111\.111\.111)&lt;/pre&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Konfiguracja filtr\u00f3w&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;konfiguracja_filtrow&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1181-3523&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;odbanowanie&quot;&gt;Odbanowanie&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# fail2ban-client status
Status
|- Number of jail:	5
`- Jail list:	database-auth, hosting-auth, hosting-notfound, hosting-recidive, sshd

# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed:	4
|  |- Total failed:	5889
|  `- Journal matches:	_SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned:	10
   |- Total banned:	1791
   `- Banned IP list:	106.75.141.160 190.1.203.180 168.196.96.37 118.100.180.76 116.98.160.162 115.76.175.127 116.110.219.121 116.110.159.168 116.98.160.255 138.68.185.126

# fail2ban unban 106.75.141.160
1&lt;/pre&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Odbanowanie&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;odbanowanie&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3524-4156&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;rozne_dodatkowe_rzeczy&quot;&gt;Różne dodatkowe rzeczy:&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; W pliku /etc/fail2ban/action.d/iptables-common.conf warto zmienić REJECT na DROP:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;#blocktype = REJECT --reject-with icmp-port-unreachable
blocktype = DROP&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; wypisanie ilości banów na jailu:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;fail2ban-client status hosting-recidive | grep &amp;#039;Currently banned:&amp;#039; | cut -d$&amp;#039;\t&amp;#039; -f2&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; baza danych znajduje się w pliku /var/lib/fail2ban/fail2ban.sqlite3&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# sqlite3 fail2ban.sqlite3 
SQLite version 3.34.1 2021-01-20 14:10:07
Enter &amp;quot;.help&amp;quot; for usage hints.
sqlite&amp;gt; .header on
sqlite&amp;gt; .mode column
sqlite&amp;gt; select * from bans limit 1;
jail  ip             timeofban   bantime  bancount  data                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
----  -------------  ----------  -------  --------  -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
sshd  49.146.34.185  1630592325  3600     1         {&amp;quot;matches&amp;quot;: [[&amp;quot;&amp;quot;, &amp;quot;2021-09-02T16:18:44.257629&amp;quot;, &amp;quot;vps-d7966fa2.vps.ovh.net sshd[85576]: Invalid user admin from 49.146.34.185 port 24981&amp;quot;], &amp;quot;2021-09-02T16:18:44.560856vps-d7966fa2.vps.ovh.net sshd[85576]: Failed none for invalid user admin from 49.146.34.185 port 24981 ssh2&amp;quot;, &amp;quot;2021-09-02T16:18:44.869209vps-d7966fa2.vps.ovh.net sshd[85576]: Connection closed by invalid user admin 49.146.34.185 port 24981 [preauth]&amp;quot;], &amp;quot;failures&amp;quot;: 3, &amp;quot;mlfid&amp;quot;: &amp;quot;vps-d7966fa2.vps.ovh.net sshd[85576]: &amp;quot;, &amp;quot;user&amp;quot;: &amp;quot;admin&amp;quot;, &amp;quot;ip4&amp;quot;: &amp;quot;49.146.34.185&amp;quot;, &amp;quot;users&amp;quot;: &amp;quot;[&amp;#039;admin&amp;#039;]&amp;quot;}
sqlite&amp;gt; &lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; format logów, jakiego używam w Apache&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;LogFormat &amp;quot;%h %l %u %t \&amp;quot;%r\&amp;quot; %&amp;gt;s %b \&amp;quot;%{Referer}i\&amp;quot; \&amp;quot;%{User-Agent}i\&amp;quot;&amp;quot; combined&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;R\u00f3\u017cne dodatkowe rzeczy:&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rozne_dodatkowe_rzeczy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4157-6695&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;zabezpieczenie_proxmoxa&quot;&gt;Zabezpieczenie Proxmoxa&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
/etc/fail2ban/filter.d/srv01-proxmox.conf
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Definition]
failregex = pvedaemon\[.*authentication failure; rhost=&amp;lt;HOST&amp;gt; user=.* msg=.*
ignoreregex =&lt;/pre&gt;

&lt;p&gt;
/etc/fail2ban/jail.local (tylko fragment dla Proxmoxa)
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[srv01-proxmox]
enabled    = true
port       = 8006
logpath    = /var/log/daemon.log
findtime   = 10m
maxretry   = 3
bantime    = 1h
banaction  = iptables-multiport&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Zabezpieczenie Proxmoxa&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zabezpieczenie_proxmoxa&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;6696-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:fedora_poradnik&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>fedora_poradnik</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:fedora_poradnik&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;poradnik_do_fedory&quot;&gt;Poradnik do Fedory&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Poradnik do Fedory (mojego autorstwa): &lt;a href=&quot;https://fedora.pl/poradniki/poradnik-dla-fedory-32/&quot; class=&quot;urlextern&quot; title=&quot;https://fedora.pl/poradniki/poradnik-dla-fedory-32/&quot; rel=&quot;ugc nofollow&quot;&gt;https://fedora.pl/poradniki/poradnik-dla-fedory-32/&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:fedorawovh&amp;rev=1661334494">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-24T09:48:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>fedorawovh</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:fedorawovh&amp;rev=1661334494</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;instalacja_fedory_w_ovh&quot;&gt;Instalacja Fedory w OVH&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Od jakiegoś czasu OVH przeszło na Debiana 10 w trybie ratunkowym. Poniższy opis nie jest aktualny.&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Poniższy sposób uruchamia graficzny instalator Fedory w trybue Rescue. Działa on wówczas bardzo wolno, ale jest wygodny i instaluje się to tylko raz.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Kupić VPS w OVH i wybrać dowolną dystrybucję Linuksa. Może być CentOS 7. Przykładowa nazwa VPSa to „telefon”.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Poczekać parę minut, aż zacznie to działać.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Sprawdzić email z IP serwera oraz hasłem roota. W tym przykładzie będzie to IP 54.38.53.141 oraz hasło Gwizdek8. OVH nie podaje słownikowych haseł, ale to tylko dla przykładu.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; W panelu klienta wybierać Servery → VPS → telefon.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Wybrać opcję „Zrestartuj do trybu Rescue”. (Iść na spacer, albo poczytać książkę, ponieważ zajmie to około 15 minut.)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Sprawdzić email. OVH przyśle hasło roota do trybu rescue. Powiedzmy Stupka4.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tryb Rescue jest ładną nazwą na Debiana 9 z zamontowaną partycją root naszego serwera z CentOSem jako /dev/sdb1.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Po zalogowaniu się na serwer w trybie rescue:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /tmp
wget https://ftp.icm.edu.pl/pub/Linux/distributions/fedora/linux/releases/31/Server/x86_64/iso/Fedora-Server-netinst-x86_64-31-1.9.iso

qemu-system-x86_64 -netdev type=user,id=mynet0 -device virtio-net-pci,netdev=mynet0 -m 1024M -localtime -no-kvm -drive format=raw,if=/dev/sdb -vga qxl -spice port=5900,addr=127.0.0.1,disable-ticketing -daemonize -cdrom /tmp/Fedora-Server-netinst-x86_64-31-1.9.iso -boot d &lt;/pre&gt;

&lt;p&gt;
Po około 30 minutach uruchomi się graficzny instalator. Przeklikanie się przez niego zajmuje kolejne pół godziny. Instalacja pakietów trwa około 6 godzin.
&lt;/p&gt;

&lt;p&gt;
Snapshot oraz dodatkowy dysk działają dobrze, czyli tak samo, jak na dystrybucji z szablonów OVH.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:firefox&amp;rev=1729416554">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-20T09:29:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>firefox</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:firefox&amp;rev=1729416554</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;firefox&quot;&gt;Firefox&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Różne rzeczy.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Przyspieszenie przewijania kółkiem myszki w &lt;em&gt;about:confg&lt;/em&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mousewheel.min_line_scroll_amount 40&lt;/pre&gt;

&lt;p&gt;
Ciemny motyw na każdej stronie. Nawet takiej, która go nie ma.
&lt;/p&gt;

&lt;p&gt;
Menu Edycja → Ustawienia → Język i wygląd → Zarządzaj kolorami…
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Afirefox&amp;amp;media=wiki:firefox_c.png&quot; class=&quot;media&quot; title=&quot;wiki:firefox_c.png&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=f93f53&amp;amp;media=wiki:firefox_c.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:firewalld&amp;rev=1710656414">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-17T06:20:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>firewalld</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:firewalld&amp;rev=1710656414</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;slowniczek_firewalld&quot;&gt;Słowniczek firewalld&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;

&lt;h5 id=&quot;wypisanie_calej_konfiguracji&quot;&gt;Wypisanie całej konfiguracji:&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt; firewall-cmd --list-all-zones&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;otwarcie_portu_znanego_protokolu&quot;&gt;Otwarcie portu znanego protokołu:&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;otwarcie_kilku_portow_jednoczesnie&quot;&gt;Otwarcie kilku portów jednocześnie:&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;firewall-cmd --add-port=2000/udp,2001/udp,2002/tcp,2003/tcp --permanent&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;konfiguracja_vpna&quot;&gt;Konfiguracja VPNa:&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;firewall-cmd --add-port=1194/udp --permanent
rirewall-cmd --add-masquerade --permanent
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 172.20.20.0/24 -o ens3 -j MASQUERADE
firewall-cmd --permanent --zone=trusted --add-interface=tun0&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;zamkniecie_portu&quot;&gt;Zamknięcie portu:&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;firewall-cmd --remove-port=2004/tcp --permanent&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;zamkniecie_ruchu_przychodzacego_dla_hostow_z_sieci_dosujacej_serwer_oraz_ponowne_otwarcie_po_rozwiazaniu_problemu&quot;&gt;Zamknięcie ruchu przychodzącego dla hostów z sieci DOSującej serwer oraz ponowne otwarcie po rozwiązaniu problemu:&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;firewall-cmd --permanent --zone=drop --add-source=123.123.123.0/24
firewall-cmd --permanent --zone=drop --remove-source=123.123.123.0/24&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;dostep_przez_ssh_w_sieci_domowej_1921681000_oraz_przez_vpn_17230250&quot;&gt;Dostęp przez ssh w sieci domowej (192.168.100.0) oraz przez vpn (172.30.25.0):&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;firewall-cmd --permanent --zone=home --add-source=192.168.100.0/24
firewall-cmd --permanent --zone=home --add-source=172.30.25.0/24
firewall-cmd --permanent --zone=home --add-service=ssh&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;utworzenie_nowej_strefy_i_dodanie_do_niej_adresow_ip&quot;&gt;Utworzenie nowej strefy i dodanie do niej adresów ip:&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;firewall-cmd --permanent --new-zone=database
firewall-cmd --permanent --zone=database --add-source=192.168.100.50
firewall-cmd --permanent --zone=database --add-source=192.168.100.51&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;zastosowanie_zmian&quot;&gt;Zastosowanie zmian:&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;firewall-cmd --reload&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;zastosowanie_zmian_z_zamknieciem_instniejacych_polaczen&quot;&gt;Zastosowanie zmian z zamknięciem instniejących połączeń:&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;firewall-cmd --complete-reload&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;zablokowoanie_ruchu_wychodzacego_na_wszystkich_strefach&quot;&gt;Zablokowoanie ruchu wychodzącego na wszystkich strefach:&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;firewall-cmd --new-policy outbound --permanent
firewall-cmd --policy outbound --add-ingress-zone HOST --permanent
firewall-cmd --policy outbound --add-egress-zone ANY --permanent
firewall-cmd --policy outbound --set-priority -100 --permanent
firewall-cmd --policy outbound --set-target REJECT --permanent
firewall-cmd --policy outbound --add-port 8080/tcp --permanent
firewall-cmd --policy outbound --add-port 53/udp --permanent
firewall-cmd --policy outbound --add-port 123/udp --permanent
firewall-cmd --policy outbound --add-port 1194/udp --permanent
firewall-cmd --reload
firewall-cmd --info-policy outbound&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:flatpak_centos&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>flatpak_centos</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:flatpak_centos&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
na przykładzie Gnome Calendar dla CentOSa:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;yum install flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub org.gnome.Calendar&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:fontyxterm&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>fontyxterm</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:fontyxterm&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Ładne fonty z xterm:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xterm -bg &amp;#039;black&amp;#039; -fg &amp;#039;grey&amp;#039; -fa &amp;#039;Monospace&amp;#039; -fs 14&lt;/pre&gt;

&lt;p&gt;
alias do .bashrc::
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;alias xterm=&amp;#039;xterm -bg &amp;#039;black&amp;#039; -fg &amp;#039;grey&amp;#039; -fa &amp;#039;Monospace&amp;#039; -fs 14&amp;#039;&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:fontyzpdf&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>fontyzpdf</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:fontyzpdf&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Pdf może być złożony ze „skrzywionych” znaków, albo mieć fonty zaszyte w pliku. Jeżeli plik zalicza się do tej drugiej kategorii, fonty można z niego wyciągnąć.
&lt;/p&gt;

&lt;p&gt;
Skrypt postscript jest dostępny tutaj: &lt;a href=&quot;http://git.ghostscript.com/?p=ghostpdl.git;a=blob;f=toolbin/extractFonts.ps&quot; class=&quot;urlextern&quot; title=&quot;http://git.ghostscript.com/?p=ghostpdl.git;a=blob;f=toolbin/extractFonts.ps&quot; rel=&quot;ugc nofollow&quot;&gt;http://git.ghostscript.com/?p=ghostpdl.git;a=blob;f=toolbin/extractFonts.ps&lt;/a&gt; (Lokalna kopia, gdyby owe repozytorium znikło - &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:extractfonts.ps&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:extractfonts.ps&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:extractfonts.ps&lt;/a&gt; )
&lt;/p&gt;

&lt;p&gt;
Najwygodniej umieścić ten skrypt w jednym katalogu z plikiem pdf i zastosować poniższe:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gs -q -dNODISPLAY toolbin_extractFonts.ps -c &amp;quot;(nazwapliku.pdf) extractFonts quit&amp;quot;&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:freesco&amp;rev=1699081224">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T07:00:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>freesco</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:freesco&amp;rev=1699081224</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;freesco&quot;&gt;Freesco&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.freesco.org/&quot; class=&quot;urlextern&quot; title=&quot;http://www.freesco.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Freesco&lt;/a&gt; to dyskietkowa dystrybucja Linuksa, którą można łatwo skonfigurować jako router.
&lt;/p&gt;

&lt;p&gt;
Kilka zdjęć:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Afreesco&amp;amp;media=wiki:01.jpg&quot; class=&quot;media&quot; title=&quot;wiki:01.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=dcdf88&amp;amp;media=wiki:01.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Afreesco&amp;amp;media=wiki:02.jpg&quot; class=&quot;media&quot; title=&quot;wiki:02.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=86a566&amp;amp;media=wiki:02.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Afreesco&amp;amp;media=wiki:13.jpg&quot; class=&quot;media&quot; title=&quot;wiki:13.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=033b20&amp;amp;media=wiki:13.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Afreesco&amp;amp;media=wiki:15.jpg&quot; class=&quot;media&quot; title=&quot;wiki:15.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=ade25a&amp;amp;media=wiki:15.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Kilka uwag dla początkujących:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; warto spojrzeć na listę wspieranych kart sieciowych, żeby nie trzeba było „dogrywać” na dyskietkę sterowników; Freesco po instalacji zostawia jedynie 25 kilobajtów wolnego miejsca; najlepiej używać starych i sprawdzonych konstrukcji: rtl8139 oraz 3com509,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; jeżeli komputer ma co najmniej 32 megabajty pamięci ram, w zaawansowanych ustawieniach warto wybrać tworzenie ramdysków przy każdym uruchomieniu, co znacząco obniża częstotliwość czytania i zapisu danych na dyskietkę,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; warto zablokować dostęp do ssh oraz witryny konfiguracyjnej Freesco od strony WAN,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dla interfejsu WAN warto zapiąć adres IP z maską 32, żeby nie widział on pozostałych hostów w naszej sieci,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; jeżeli system nie pamięta trasy routingu po restarcie, można dodać „route add […]” do crona co minutę,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; serwer SSH na Freesco w wersji 0.38 (której używam) jest dość stary i trzeba przekonać współczesnego klienta OpenSSH, żeby się połączył:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;ssh ip.ip.ip.ip -l root -oKexAlgorithms=+diffie-helman-group1-sha1 -oCiphers=+3des-cbc&lt;/pre&gt;

&lt;p&gt;
Miłej zabawy!
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Zdjęcia z instalacji nowego routera.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Afreesco&amp;amp;media=wiki:img_20221007_203653261.jpg&quot; class=&quot;media&quot; title=&quot;wiki:img_20221007_203653261.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=231c5e&amp;amp;media=wiki:img_20221007_203653261.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Afreesco&amp;amp;media=wiki:img_20221008_003100586.jpg&quot; class=&quot;media&quot; title=&quot;wiki:img_20221008_003100586.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=bc06e9&amp;amp;media=wiki:img_20221008_003100586.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Afreesco&amp;amp;media=wiki:img_20221008_003108520.jpg&quot; class=&quot;media&quot; title=&quot;wiki:img_20221008_003108520.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=4a8ef3&amp;amp;media=wiki:img_20221008_003108520.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Afreesco&amp;amp;media=wiki:img_20221008_003135379.jpg&quot; class=&quot;media&quot; title=&quot;wiki:img_20221008_003135379.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=4e09fc&amp;amp;media=wiki:img_20221008_003135379.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:goaccess&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>goaccess</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:goaccess&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;goaccess_-_analiza_logow_serwera_www&quot;&gt;Goaccess - analiza logów serwera www&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Goaccess służy do analizy logów access oraz errors (lub wymieszanych).
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;goaccess --log-file=vhost-access.log&lt;/pre&gt;

&lt;p&gt;
Przy założeniu, że log jest w takim formacie…
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ip.ip.ip.ip - - [05/Jun/2020:08:16:28 +0200] &amp;quot;POST jakis/plik/php HTTP/1.1&amp;quot; 200 76 &amp;quot;https://wiki.baszarek.pl/jakies?parametry&amp;quot; &amp;quot;Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0&amp;quot;&lt;/pre&gt;

&lt;p&gt;
… można zrobić raport html. Najpierw należy pozbyć się cudzysłowów z loga:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sed &amp;#039;s/\&amp;quot;//g&amp;#039; vhost-access.log &amp;gt; access_tmp.log&lt;/pre&gt;

&lt;p&gt;
i wygenerować raport:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;goaccess --log-file=access_tmp.log --log-format &amp;quot;%h %^ %^ [%d:%t %^] %m %U %H %s %b - %u&amp;quot; --date-format=&amp;quot;%d/%b/%Y&amp;quot; --time-format=&amp;quot;%H:%M:%S&amp;quot; --html-prefs=&amp;#039;{&amp;quot;theme&amp;quot;:&amp;quot;bright&amp;quot;,&amp;quot;perPage&amp;quot;:20,&amp;quot;layout&amp;quot;:&amp;quot;vertical&amp;quot;,&amp;quot;showTables&amp;quot;:true}&amp;#039; -a -o raport.html&lt;/pre&gt;
&lt;hr /&gt;

&lt;p&gt;
Skrypt bashowy, który wystawia plik index.html z raportem:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/bash
cd /var/www/stat.strona.pl
# zebranie logow access oraz errors
cat /var/www/strona.pl/log/access.log /var/www/strona.pl/log/errors.log &amp;gt; log1
# pozbycie sie cudzyslowow z loga
sed &amp;#039;s/\&amp;quot;//g&amp;#039; log1 &amp;gt; log2
# wygenerowanie raportu
goaccess --log-file=log2 --log-format &amp;quot;%h %^ %^ [%d:%t %^] %m %U %H %s %b - %u&amp;quot; --date-format=&amp;quot;%d/%b/%Y&amp;quot; --time-format=&amp;quot;%H:%M:%S&amp;quot; --html-prefs=&amp;#039;{&amp;quot;theme&amp;quot;:&amp;quot;bright&amp;quot;,&amp;quot;perPage&amp;quot;:20,&amp;quot;layout&amp;quot;:&amp;quot;vertical&amp;quot;,&amp;quot;showTables&amp;quot;:true}&amp;#039; -a -o public_html/index.html
# nadanie uprawnien
chown root:stat.strona.pl public_html/index.html
chmod 640 public_html/index.html&lt;/pre&gt;

&lt;p&gt;
Użytkownik &lt;em&gt;stat.strona.pl&lt;/em&gt; jest wykorzystywany w mod-itk. Jeżeli się tego moda nie używa, należy nadać uprawnienia odczytu dla użytkownika &lt;em&gt;apache&lt;/em&gt;, &lt;em&gt;www-data&lt;/em&gt;, lub podobnego. Statystyki warto schować za htpasswd.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
W Debianie 10 Goaccess ma błąd, który nie pokazuje obrazków w wygenerowanym pliku html, Należy zainstalować pakiet &lt;em&gt;libmaxminddb0&lt;/em&gt; , a potem zaktualizować Goaccess pakietem z gałęzi sid.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:googlechrome&amp;rev=1685196998">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-27T14:16:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>googlechrome</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:googlechrome&amp;rev=1685196998</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;google_chrome&quot;&gt;Google Chrome&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Agooglechrome&amp;amp;media=wiki:gc.jpg&quot; class=&quot;media&quot; title=&quot;wiki:gc.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=6f4b12&amp;amp;media=wiki:gc.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Jeżeli witryna google.com wygląda jak powyżej, a w terminalu chrome wypisuje wiele razy:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Errors:
link failed but did not provide an info log
[17873:17873:0527/160419.489298:ERROR:shared_context_state.cc(77)] Skia shader compilation error&lt;/pre&gt;

&lt;p&gt;
jest to wina nowych sterowników od karty graficznej. Zdarza się to od czasu do czasu zarówno na Radeonach, jak i Nvidii. Pomaga wówczas uruchamianie przeglądarki w taki sposób:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;google-chrome --disable-gpu-driver-bug-workarounds&lt;/pre&gt;

&lt;p&gt;
i czekanie na nowy sterownik, lub poprawkę do Chrome.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:gpg_notesik&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>gpg_notesik</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:gpg_notesik&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Wypisanie kluczy:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gpg --list-keys
gpg --list-keys &amp;quot;imie@email.pl&amp;quot;
gpg --list-secret-keys&lt;/pre&gt;

&lt;p&gt;
Eksport kluczy:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gpg --export --armor &amp;gt; klucze_publiczne
gpg --export --armor &amp;quot;imie@email.pl&amp;quot; &amp;gt; klucz_publiczny
gpg --export-secret-keys --armor &amp;gt; klucze_prywatne&lt;/pre&gt;

&lt;p&gt;
Obejrzenie klucza w pliku (asc, lub armor):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gpg plik&lt;/pre&gt;

&lt;p&gt;
Import klucza z pliku:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gpg --import plik&lt;/pre&gt;

&lt;p&gt;
Dodanie klucza do zaufanych (wymagane przez, między innymi pass):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gpg --edit-key &amp;quot;imie@email.pl&amp;quot;
gpg&amp;gt; trust
[wybrać 5]&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:graylog&amp;rev=1733411205">
        <dc:format>text/html</dc:format>
        <dc:date>2024-12-05T15:06:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>graylog</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:graylog&amp;rev=1733411205</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;graylog&quot;&gt;Graylog&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Traktować jako opis, nie przepis.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Graylog&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;graylog&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-59&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;instalacja_na_rhel9_i_podobnych&quot;&gt;Instalacja na RHEL9 i podobnych&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Należy zainstalować trzy rzeczy:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MongoDB,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Datanode,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Graylog.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Pamiętaj, że licencja MongoDB nie pozwala na redystrybucję dla klientów, ale na swoje potrzeby można tego używać. Pakiet graylog-server zawiera Javę od Eclipse oraz forka ElasticSearch nazwanego Opensearch.
&lt;/p&gt;

&lt;p&gt;
Polecam taką konfigurację sprzętową, lub wirtualną:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 8x CPU&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 32 gigabajty ramu,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dysk co najmniej 250 gigabajtów na dane w katalogu /var/lib/graylog-datanode ; lokalizację danych można zmienić, ale mi się nie chciało.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Nie polegam tutaj na zewnętrznych repozytoriach, ponieważ serwer z Graylogiem nie ma wyjścia na internet. Można zrobić reposync MongoDB oraz Grayloga, ale niektóre pliki RPM zajmują ponad gigabajt.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;instalacja_mongodb&quot;&gt;Instalacja MongoDB&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Lista pakietów RPM:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-database-tools-100.10.0-1.x86_64.rpm&quot; class=&quot;urlextern&quot; title=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-database-tools-100.10.0-1.x86_64.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-database-tools-100.10.0-1.x86_64.rpm&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-mongosh-2.3.4.x86_64.rpm&quot; class=&quot;urlextern&quot; title=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-mongosh-2.3.4.x86_64.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-mongosh-2.3.4.x86_64.rpm&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-7.0.9-1.el9.x86_64.rpm&quot; class=&quot;urlextern&quot; title=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-7.0.9-1.el9.x86_64.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-7.0.9-1.el9.x86_64.rpm&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-database-7.0.9-1.el9.x86_64.rpm&quot; class=&quot;urlextern&quot; title=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-database-7.0.9-1.el9.x86_64.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-database-7.0.9-1.el9.x86_64.rpm&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-database-tools-extra-7.0.9-1.el9.x86_64.rpm&quot; class=&quot;urlextern&quot; title=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-database-tools-extra-7.0.9-1.el9.x86_64.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-database-tools-extra-7.0.9-1.el9.x86_64.rpm&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-mongos-7.0.9-1.el9.x86_64.rpm&quot; class=&quot;urlextern&quot; title=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-mongos-7.0.9-1.el9.x86_64.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-mongos-7.0.9-1.el9.x86_64.rpm&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-server-7.0.9-1.el9.x86_64.rpm&quot; class=&quot;urlextern&quot; title=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-server-7.0.9-1.el9.x86_64.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-server-7.0.9-1.el9.x86_64.rpm&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-tools-7.0.9-1.el9.x86_64.rpm&quot; class=&quot;urlextern&quot; title=&quot;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-tools-7.0.9-1.el9.x86_64.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/7.0/x86_64/RPMS/mongodb-org-tools-7.0.9-1.el9.x86_64.rpm&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Pobrać do jednego katalogu i zainstalować:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# rpm -Uvh *rpm&lt;/pre&gt;

&lt;p&gt;
Niektórych z tych narzędzi nie będziemy potrzebować, ale aplikacje Mongo nie zajmują dużo miejsca na dysku i bez dostępu do internetu musiałbym ich szukać. Mongo nie wymaga tutaj żadnej dodatkowej konfiguracji. Nie trzeba też otwierać na firewallu żadnego portu.
&lt;/p&gt;

&lt;p&gt;
Źródło: &lt;a href=&quot;https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-red-hat/&quot; class=&quot;urlextern&quot; title=&quot;https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-red-hat/&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-red-hat/&lt;/a&gt; .
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;h5 id=&quot;instalacja_datanode&quot;&gt;Instalacja Datanode&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Link do pakietu RPM: &lt;a href=&quot;https://packages.graylog2.org/repo/el/stable/6.1/x86_64/graylog-datanode-6.1.3-1.x86_64.rpm&quot; class=&quot;urlextern&quot; title=&quot;https://packages.graylog2.org/repo/el/stable/6.1/x86_64/graylog-datanode-6.1.3-1.x86_64.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;https://packages.graylog2.org/repo/el/stable/6.1/x86_64/graylog-datanode-6.1.3-1.x86_64.rpm&lt;/a&gt; . Pobrać i zainstalować.
&lt;/p&gt;

&lt;p&gt;
Zalecenia są takie, żeby dać procesom więcej pamięci. Napisać plik &lt;em&gt;/etc/sysctl.d/90-graylog.conf&lt;/em&gt; o treści:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vm.max_map_count=262144&lt;/pre&gt;

&lt;p&gt;
i zaczytać:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# sysctl -p /etc/sysctl.d/90-graylog.conf
# cat /proc/sys/vm/max_map_count
262144&lt;/pre&gt;

&lt;p&gt;
Teraz można wylosować podejrzanie długie hasło:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt; /dev/urandom tr -dc A-Z-a-z-0-9 | head -c${1:-96};echo;&lt;/pre&gt;

&lt;p&gt;
które należy wpisać do pliku &lt;em&gt;/etc/graylog/datanode/datanode.conf&lt;/em&gt; w linijce
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;password_secret = &lt;/pre&gt;

&lt;p&gt;
i uruchomić datanode:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# systemctl enable graylog-datanode
# systemctl start graylog-datanode&lt;/pre&gt;

&lt;p&gt;
Źródło: &lt;a href=&quot;https://go2docs.graylog.org/current/downloading_and_installing_graylog/red_hat_installation.htm?tocpath=Install%20Graylog%7COperating%20System%20Packages%7C_____2#InstallDataNode&quot; class=&quot;urlextern&quot; title=&quot;https://go2docs.graylog.org/current/downloading_and_installing_graylog/red_hat_installation.htm?tocpath=Install%20Graylog%7COperating%20System%20Packages%7C_____2#InstallDataNode&quot; rel=&quot;ugc nofollow&quot;&gt;https://go2docs.graylog.org/current/downloading_and_installing_graylog/red_hat_installation.htm?tocpath=Install%20Graylog%7COperating%20System%20Packages%7C_____2#InstallDataNode&lt;/a&gt; . 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;h5 id=&quot;instalacja_grayloga&quot;&gt;Instalacja Grayloga&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Link do pliku RPM: &lt;a href=&quot;https://packages.graylog2.org/repo/el/stable/6.1/x86_64/graylog-server-6.1.3-1.x86_64.rpm&quot; class=&quot;urlextern&quot; title=&quot;https://packages.graylog2.org/repo/el/stable/6.1/x86_64/graylog-server-6.1.3-1.x86_64.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;https://packages.graylog2.org/repo/el/stable/6.1/x86_64/graylog-server-6.1.3-1.x86_64.rpm&lt;/a&gt; . Pobrać i zainstalować.
&lt;/p&gt;

&lt;p&gt;
W pliku &lt;em&gt;/etc/graylog/server/server.conf&lt;/em&gt; w linijce 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;password_secret = &lt;/pre&gt;

&lt;p&gt;
przepisać hasło z pliku &lt;em&gt;/etc/graylog/datanode/datanode.conf&lt;/em&gt; .
&lt;/p&gt;

&lt;p&gt;
Teraz wygenerować sumę hasła do Grayloga:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# echo -n &amp;quot;Enter Password: &amp;quot; &amp;amp;&amp;amp; head -1 &amp;lt;/dev/stdin | tr -d &amp;#039;\n&amp;#039; | sha256sum | cut -d&amp;quot; &amp;quot; -f1
  [podać hasło]&lt;/pre&gt;

&lt;p&gt;
Zwróconą sumę przepisać do pliku &lt;em&gt;/etc/graylog/server/server.conf&lt;/em&gt; w linijce
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;root_password_sha2 =&lt;/pre&gt;

&lt;p&gt;
Całościowo plik &lt;em&gt;/etc/graylog/server/server.conf&lt;/em&gt; może tak wyglądać:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cat /etc/graylog/server/server.conf | grep -Ev &amp;#039;^#|^$&amp;#039;
is_leader = true
node_id_file = /etc/graylog/server/node-id
password_secret = ........................
root_password_sha2 = .....................
bin_dir = /usr/share/graylog-server/bin
data_dir = /var/lib/graylog-server
plugin_dir = /usr/share/graylog-server/plugin
http_bind_address = 0.0.0.0:9000
http_enable_cors = true
stream_aware_field_types=false
trusted_proxies = 127.0.0.1/32
disabled_retention_strategies = none,close
allow_leading_wildcard_searches = false
allow_highlighting = false
field_value_suggestion_mode = on
output_batch_size = 500
output_flush_interval = 1
output_fault_count_threshold = 5
output_fault_penalty_seconds = 30
processor_wait_strategy = blocking
ring_size = 65536
inputbuffer_ring_size = 65536
inputbuffer_wait_strategy = blocking
message_journal_enabled = true
message_journal_dir = /var/lib/graylog-server/journal
lb_recognition_period_seconds = 3
mongodb_uri = mongodb://localhost/graylog
mongodb_max_connections = 1000
integrations_scripts_dir = /usr/share/graylog-server/scripts&lt;/pre&gt;

&lt;p&gt;
Można już uruchomić aplikację:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# systemctl enable graylog-server
# systemctl restart graylog-server&lt;/pre&gt;

&lt;p&gt;
W logu &lt;em&gt;/var/log/graylog-server/server.log&lt;/em&gt; czasem można znaleźć linijki 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;2024-11-30T15:42:43.704+01:00 WARN  [IndexerClusterCheckerThread] Elasticsearch node [192.168.111.45] triggered [ES_NODE_DISK_WATERMARK_HIGH] due to low free disk space&lt;/pre&gt;

&lt;p&gt;
i w takim wypadku trzeba przydzielić więcej miejsca do katalogu &lt;em&gt;/var/lib/graylog-datanode&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
Jeżeli Graylog uruchomił się poprawnie, we wspomnianym logu pojawi się zapis:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;========================================================================================================

It seems you are starting Graylog for the first time. To set up a fresh install, a setup interface has
been started. You must log in to it to perform the initial configuration and continue.

Initial configuration is accessible at 0.0.0.0:9000, with username &amp;#039;admin&amp;#039; and password &amp;#039;.........&amp;#039;.
Try clicking on http://admin:.........@0.0.0.0.0:9000

========================================================================================================&lt;/pre&gt;

&lt;p&gt;
Trzeba na chwilkę otworzyć port 9000/tcp na firewallu, żeby wejść na stronę konfiguratora i w czterech krokach utworzyć certyfikat oraz indeks w Opensearch. To nie będzie certyfikat dla strony administracyjnej Grayloga, więc nie trzeba się nim za bardzo przejmować i utworzyć jeden na 20 lat. Zamiast 0.0.0.0 trzeba napisać adres IP serwera z aplikacją. Po przejściu konfiguratora można zamknąć port 9000.
&lt;/p&gt;

&lt;p&gt;
Źródło: &lt;a href=&quot;https://go2docs.graylog.org/current/downloading_and_installing_graylog/red_hat_installation.htm?tocpath=Install%20Graylog%7COperating%20System%20Packages%7C_____2#InstallGraylog&quot; class=&quot;urlextern&quot; title=&quot;https://go2docs.graylog.org/current/downloading_and_installing_graylog/red_hat_installation.htm?tocpath=Install%20Graylog%7COperating%20System%20Packages%7C_____2#InstallGraylog&quot; rel=&quot;ugc nofollow&quot;&gt;https://go2docs.graylog.org/current/downloading_and_installing_graylog/red_hat_installation.htm?tocpath=Install%20Graylog%7COperating%20System%20Packages%7C_____2#InstallGraylog&lt;/a&gt; . 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;h5 id=&quot;proxy_na_nginx&quot;&gt;Proxy na Nginx&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Trzeba mieć zainstalowanego Nginxa i wygenerowany / kupiony jakikolwiek certyfikat SSL.
&lt;/p&gt;

&lt;p&gt;
Plik &lt;em&gt;/etc/nginx/proxy_params&lt;/em&gt; , zawierający dosyć standardowe ustawienia:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

client_max_body_size 64M;

add_header Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains; preload&amp;quot;;
#add_header X-Frame-Options SAMEORIGIN;
#add_header X-Content-Type-Options nosniff,sameorigin;
#add_header Content-Security-Policy &amp;quot;default-src &amp;#039;self&amp;#039;&amp;quot;;
add_header X-XSS-Protection &amp;quot;1; mode=block&amp;quot;;
add_header Referrer-Policy &amp;quot;origin&amp;quot;;

proxy_intercept_errors on;
#proxy_redirect off;&lt;/pre&gt;

&lt;p&gt;
Zwrócić uwagę na komentarze. Uri &lt;em&gt;/api&lt;/em&gt; nie chce mi się ładować w przeglądarce, kiedy te ustawienia są włączone. Jeszcze nie wiem, dlaczego.
&lt;/p&gt;

&lt;p&gt;
Plik vhosta, na przykład &lt;em&gt;/etc/nginx/conf.d/graylog.conf&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;server {
  listen 80;
  server_name log1.ping.local;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl;
  server_name log1.ping.local;
  location / {
    proxy_pass http://127.0.0.1:9000;
    include proxy_params;
  }
  
  ssl_certificate_key /etc/ssl/nginx/log1.ping.local.key;
  ssl_certificate     /etc/ssl/nginx/log1.ping.local.crt;
}&lt;/pre&gt;

&lt;p&gt;
I można używać Grayloga po normalnym https, który nie jest skonfigurowany w samej aplikacji.
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Instalacja na RHEL9 i podobnych&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;instalacja_na_rhel9_i_podobnych&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;60-8178&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;logi_z_journala&quot;&gt;Logi z journala&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Graylog nie umie Journald i trzeba mu trochę pomóc.
&lt;/p&gt;

&lt;p&gt;
W aplikacji Graylog trzeba dodać nowy „input” typu „Syslog UDP”
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Agraylog&amp;amp;media=wiki:gl_input01.jpg&quot; class=&quot;media&quot; title=&quot;wiki:gl_input01.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=a5c8d6&amp;amp;media=wiki:gl_input01.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
nasłuchujący na 0.0.0.0 na jakimś wysokim porcie typu 10010
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Agraylog&amp;amp;media=wiki:gl_input02.jpg&quot; class=&quot;media&quot; title=&quot;wiki:gl_input02.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=6634d6&amp;amp;media=wiki:gl_input02.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
W celu ochrony przed spamem, należy otworzyć na firewallu port 10010/udp, ale tylko dla obserwowanej maszyny. Inne maszyny będą miały nowe „inputy” na innych portach.
&lt;/p&gt;

&lt;p&gt;
Na obserwowanej maszynie można zrobić nowy serwis w pliku &lt;em&gt;/etc/systemd/system/journalsyslog.service&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=Send Journalctl to Syslog

[Service]
TimeoutStartSec=0
ExecStart=/bin/sh -c &amp;#039;/usr/bin/journalctl -o short-iso -f | ncat -u log1.ping.local 10010&amp;#039;

Restart=always
RestartSec=11s

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;
Po uruchomieniu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# systemctl daemon-reload
# systemctl enable journalsyslog
# systemctl restart journalsyslog&lt;/pre&gt;

&lt;p&gt;
w panelu administracyjnym Grayloga będzie widać pierwsze zagregowane logi.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Logi z journala&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logi_z_journala&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;8179-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:gtk3motyw&amp;rev=1774501535">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-26T05:05:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>gtk3motyw</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:gtk3motyw&amp;rev=1774501535</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;gtk_i_motywy&quot;&gt;GTK i motywy&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Stare GTK konfiguruje się za pomocą plików &lt;em&gt;.gtkrc&lt;/em&gt; oraz &lt;em&gt;.gtkrc-2.0&lt;/em&gt;, ale teraz można ustawić motyw aplikacji zmiennymi środowiskowymi, na przykład:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;GTK_THEME=Adwaita:light gnome-calculator
GTK_THEME=Adwaita:dark gnome-calculator&lt;/pre&gt;

&lt;p&gt;
Linijka &lt;em&gt;Exec&lt;/em&gt; dla pliku dekstop do ikonki VLC na pulpicie Gnome:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Exec=env GTK_THEME=Adwaita:dark env QT_QPA_PLATFORMTHEME=qt5ct /usr/bin/vlc --started-from-file %U&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:homeraid&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>homeraid</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:homeraid&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;przeniesienie_home_na_raid1&quot;&gt;Przeniesienie home na raid1&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Założenia:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; system RHEL 8, lub podobny,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; katalog home znajduje się na zaszyfrowanej partycji root,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; należy przenieść katalog home na zaszyfrowany wolumen na raid złożony z dwóch nowych dysków.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Najpierw należy utworzyć raida:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mdadm --create /dev/md0 --metadata=0.9 --level 1 --raid-devices=2 /dev/sdb /dev/sdc
mdadm --detail --scan --verbose &amp;gt; /etc/mdadm.conf&lt;/pre&gt;

&lt;p&gt;
Macierz zacznie się pomału budować, co można sprawdzić czytając plik &lt;em&gt; /proc/mdstat &lt;/em&gt;. W tym czasie można pracować dalej. Utworzenie lmva:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pvcreate /dev/md0
vgcreate union /dev/md0
lvcreate -n home -L 1500G union&lt;/pre&gt;

&lt;p&gt;
Szyfrowanie volumen i tworzenie partycji. Należy podać takie samo hasło, jakie jest dla partycji root:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cryptsetup luksFormat /dev/mapper/union-home
cryptsetup luksOpen /dev/mapper/union-home union-crypt-home
mkfs -t ext4 /dev/mapper/union-crypt-home&lt;/pre&gt;

&lt;p&gt;
Skopiowanie i przygotowanie danych:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir /mnt/tymczasowe
mount /dev/mapper/union-crypt-home /mnt/tymczasowe
cp -R /home/[nazwauzytkownika] /mnt/tymczasowe/
restorecon -Rv /mnt/tymczasowe&lt;/pre&gt;

&lt;p&gt;
Nowa linijka w pliku &lt;em&gt;/etc/crypttab&lt;/em&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;union-crypt-home UUID=6a402bca-1254-44ac-b012-317b37b6df46 none discard&lt;/pre&gt;

&lt;p&gt;
Nowa linijka w pliku &lt;em&gt;/etc/fstab&lt;/em&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;UUID=0e1d59ed-47a5-43d7-9072-eace05eb0ccc /home ext4 defaults 1 2&lt;/pre&gt;

&lt;p&gt;
Tymczasowe, testowe zamontowanie /home:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;umount /mnt/tymczasowe
mount -a&lt;/pre&gt;

&lt;p&gt;
Jeżeli wszystko działa, można zrestartować system. Jeżeli nadal wszystko działa, można użyć systemrescuecd, lub podobnego, aby usunąć katalog /home/[nazwauzytkownika] z partycji root.
&lt;/p&gt;

&lt;p&gt;
Końcowy efekty powinien wyglądać tak:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lsblk
NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                                             8:0    0 111,8G  0 disk  
├─sda1                                          8:1    0   1,2G  0 part  /boot
├─sda2                                          8:2    0   200M  0 part  /boot/efi
└─sda3                                          8:3    0 110,4G  0 part  
  └─luks-16f3924c-a96c-4229-b4de-bfa837977c88 253:0    0 110,4G  0 crypt /
sdb                                             8:16   0   1,8T  0 disk  
└─md0                                           9:0    0   1,8T  0 raid1 
  └─union-home                                253:1    0   1,5T  0 lvm   
    └─union-crypt-home                        253:2    0   1,5T  0 crypt /home
sdc                                             8:32   0   1,8T  0 disk  
└─md0                                           9:0    0   1,8T  0 raid1 
  └─union-home                                253:1    0   1,5T  0 lvm   
    └─union-crypt-home                        253:2    0   1,5T  0 crypt /home
sr0                                            11:0    1  1024M  0 rom   &lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:ignoreeof&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ignoreeof</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:ignoreeof&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;niezamykalny_terminal&quot;&gt;Niezamykalny terminal&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Tak naprawdę da się go zamknąć. Przydatne, kiedy potrzebuję przewinąć do góry o kilka godzin wstecz.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;alias &amp;#039;clear&amp;#039;=&amp;quot;echo &amp;#039;:( &amp;#039;&amp;quot;
alias &amp;#039;ssh&amp;#039;=&amp;quot;echo &amp;#039;:( &amp;#039;&amp;quot;
set -o ignoreeof&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:ikonka_venv&amp;rev=1765865025">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-16T06:03:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ikonka_venv</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:ikonka_venv&amp;rev=1765865025</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ikonka_dla_skryptu_z_virualenv&quot;&gt;Ikonka dla skryptu z virualenv&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Plik ~/.local/bin/mu
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/bash

cd /home/uzytkownik/python/microbit/mu/
source bin/activate
cd /home/uzytkownik/python/microbit/mu/mu-0.9.12/
python3.12 run.py&lt;/pre&gt;

&lt;p&gt;
Plik ~/.local/share/applications/mu.desktop 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Desktop Entry]
Version=1.0
Type=Application
Name=Mu
Name[pl]=Edytor Mu
Keywords=mu
Exec=/usr/bin/bash -i /home/uzytkownik/.local/bin/mu %U
StartupNotify=false&lt;/pre&gt;
&lt;hr /&gt;

&lt;p&gt;
źródło: &lt;a href=&quot;https://askubuntu.com/questions/1018253/launching-script-containing-virtual-env-through-desktop-icon&quot; class=&quot;urlextern&quot; title=&quot;https://askubuntu.com/questions/1018253/launching-script-containing-virtual-env-through-desktop-icon&quot; rel=&quot;ugc nofollow&quot;&gt;https://askubuntu.com/questions/1018253/launching-script-containing-virtual-env-through-desktop-icon&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:inotifywait&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>inotifywait</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:inotifywait&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;inotifywait&quot;&gt;Inotifywait&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Różne pomysły na wykorzystanie inotifywait.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Zamiana logu w jsona:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cat wiadomosc
{
&amp;quot;version&amp;quot;: &amp;quot;1.1&amp;quot;,
&amp;quot;host&amp;quot;: &amp;quot;super-komputer&amp;quot;,
&amp;quot;_application&amp;quot;: &amp;quot;naprawaswiata&amp;quot;,
&amp;quot;message&amp;quot;: &amp;quot;${message}&amp;quot;
}

$ inotifywait -q -m -e modify tmp | while read -r ; do sed &amp;quot;s|\${message}|$(tail -n 1 tmp)|&amp;quot; wiadomosc ; done&lt;/pre&gt;

&lt;p&gt;
Teraz można dodawać kolejne linijki do logu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ echo &amp;#039;test jeden&amp;#039; &amp;gt;&amp;gt; tmp&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:iptables22&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>iptables22</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:iptables22&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
„Biedny” fail2ban zrobiony w czystym iptables. Zlicza zarówno nieudane, jak i udane logowania.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;*filter
-F
-X
-P INPUT DROP
-A INPUT -s 0/0 -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-N trap
-A INPUT -s 0/0 -p tcp --dport 22 --syn -j trap
-A trap -m recent --name its_trap --rcheck --seconds 50 --hitcount 3 --rttl -j DROP
-A trap -m recent --name its_trap --set -j RETURN

-N stoper
-A INPUT -s 0/0 -p tcp --dport 22 --syn -j stoper
-A stoper -m connlimit --connlimit-above 4 -j DROP
-A stoper -m limit --limit 2/m --limit-burst 1 -j ACCEPT
  
COMMIT&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:jasnienie&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>jasnienie</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:jasnienie&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;jasnosc_ekranu_na_laptopie_z_radeonem&quot;&gt;Jasność ekranu na laptopie z Radeonem&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Poniżej mały skrypt na bardzo dokładną regulację jasności wyświetlacza na laptopie ze starym układem graficznym Radeon:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/bash
echo -n &amp;quot;Jest: &amp;quot;
cat /sys/class/backlight/radeon_bl0/brightness
echo -n &amp;quot;Ustaw na: &amp;quot;
read bright
sudo echo &amp;quot;$bright&amp;quot; &amp;gt; /sys/class/backlight/radeon_bl0/brightness&lt;/pre&gt;

&lt;p&gt;
Nie podawać wartości poniżej 10, ponieważ ekran będzie bardzo ciemny.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:java_console&amp;rev=1727368501">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-26T16:35:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>java_console</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:java_console&amp;rev=1727368501</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ustawienia_javaws_dla_starych_ilosow_i_idracow&quot;&gt;Ustawienia javaws dla starych ilosów i idraców&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Potrzebna jest nieco starsza Java: &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:jre-8u301-linux-x64.rpm&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:jre-8u301-linux-x64.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:jre-8u301-linux-x64.rpm&lt;/a&gt; .
&lt;/p&gt;

&lt;p&gt;
W pliku /usr/java/default/lib/security/java.security zamienić trzy linijki:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jdk.certpath.disabledAlgorithms=MD2, MD5, SHA1 jdkCA &amp;amp; usage TLSServer, \
RSA keySize &amp;lt; 1024, DSA keySize &amp;lt; 1024, EC keySize &amp;lt; 224

jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize &amp;lt; 1024, DSA keySize &amp;lt; 1024

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize &amp;lt; 1024, \
EC keySize &amp;lt; 224, 3DES_EDE_CBC, anon, NULL&lt;/pre&gt;

&lt;p&gt;
na
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jdk.certpath.disabledAlgorithms=MD2
jdk.jar.disabledAlgorithms=MD2
jdk.tls.disabledAlgorithms=MD2&lt;/pre&gt;

&lt;p&gt;
Potem można dostać się do konsoli poleceniem:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/usr/java/default/bin/javaws konsola.jnlp&lt;/pre&gt;

&lt;p&gt;
W pliku jnlp jest zapisany użytkownik i hasło jako token, ale w przypadku Della można je zmienić na login i hasło do iDraca, co pozwala na nielimitowany czasowo dostęp do konsoli. Montowanie plików ISO również działa.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ustawienia javaws dla starych ilos\u00f3w i idrac\u00f3w&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ustawienia_javaws_dla_starych_ilosow_i_idracow&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1039&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;zaufane_witryny&quot;&gt;Zaufane witryny&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Warto dodać strony idraców do zaufanych w programie jcontrol.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Ajava_console&amp;amp;media=wiki:jcontrol.jpg&quot; class=&quot;media&quot; title=&quot;wiki:jcontrol.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=3b677a&amp;amp;media=wiki:jcontrol.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Zaufane witryny&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zaufane_witryny&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1040-1161&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;your_java_version_is_out_of_date&quot;&gt;Your Java version is out of date.&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Jeżeli pojawia się ostrzeżenie o zbyt starej wersji Javy, można je obejść parametrem &lt;em&gt;verbose&lt;/em&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/usr/java/default/bin/javaws -verbose konsola.jnlp&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Your Java version is out of date.&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;your_java_version_is_out_of_date&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1162-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:kvm&amp;rev=1707555725">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-10T09:02:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>kvm</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:kvm&amp;rev=1707555725</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;virsh_kvm_qemu&quot;&gt;Virsh / KVM / qemu&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Virsh \/ KVM \/ qemu&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;virsh_kvm_qemu&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-34&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;fizyczny_interfejs_sieciowy_dla_wirtualki&quot;&gt;Fizyczny interfejs sieciowy dla wirtualki&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; potrzebna jest &lt;em&gt;jedna&lt;/em&gt; maszyna wirtualna o nazwie tulipan na hoście z Fedorą 34,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; trzeba to zrobić jak najprościej,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; wirtualka ma być w tej samej sieci (192.168.2.0/24), co host,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; należy wydzielić osobny interfejs sieciowy dla wirtualki.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Instalacja potrzebnego (oraz trochę nadmiarowego, na wszelki wypadek) oprogramowania związanego z kvm oraz qemu dla Fedory
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# dnf install libvirt-bash-completion libvirt-libs libvirt-client python3-libvirt libvirt-daemon libvirt-daemon-driver-qemu libvirt-daemon-driver-storage-core libvirt-daemon-driver-network libvirt-daemon-driver-storage-disk libvirt-daemon-driver-storage-scsi libvirt-daemon-driver-interface libvirt-daemon-config-network libvirt-daemon-driver-storage-iscsi-direct libvirt-daemon-driver-storage-gluster libvirt-daemon-driver-nodedev libvirt-daemon-driver-storage-mpath libvirt-daemon-driver-storage-logical libvirt-daemon-driver-storage-iscsi libvirt-daemon-driver-secret libvirt-daemon-driver-nwfilter libvirt-daemon-driver-storage-sheepdog libvirt-daemon-driver-storage-zfs libvirt-daemon-driver-storage-rbd libvirt-daemon-driver-storage libvirt-daemon-kvm qemu-img libvirt-daemon-driver-qemu ipxe-roms-qemu qemu-common qemu-ui-opengl qemu-ui-egl-headless qemu-ui-sdl qemu-audio-alsa qemu-audio-oss qemu-audio-pa qemu-audio-sdl qemu-block-curl qemu-block-dmg qemu-block-gluster qemu-block-iscsi qemu-block-nfs qemu-block-ssh qemu-char-baum qemu-device-display-virtio-gpu qemu-device-display-virtio-gpu-pci qemu-device-display-virtio-vga qemu-device-usb-redirect qemu-device-usb-smartcard qemu-ui-curses qemu-ui-gtk qemu-ui-spice-core qemu-char-spice qemu-ui-spice-app qemu-audio-spice qemu-device-display-qxl qemu-system-x86-core qemu-block-rbd qemu-system-x86 qemu-kvm virt-install&lt;/pre&gt;

&lt;p&gt;
W CentOS 9 wystarczą pakiety:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# dnf install qemu-kvm libvirt virt-install&lt;/pre&gt;

&lt;p&gt;
oraz ich zależności.
&lt;/p&gt;

&lt;p&gt;
Otwarcie portu 5901 w sieci lokalnej, z dodaną siecią w &lt;em&gt;sources&lt;/em&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# firewall-cmd --permanent --zone=home --add-port=5901/tcp&lt;/pre&gt;

&lt;p&gt;
Pobranie pliku iso z instalatorem (nie musi to być Fedora):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cd /var/lib/libvirt/images
# wget -c https://download.fedoraproject.org/pub/fedora/linux/releases/34/Server/x86_64/iso/Fedora-Server-dvd-x86_64-34-1.2.iso&lt;/pre&gt;

&lt;p&gt;
Przygotowanie fizycznego interfejsu eno2 dla maszyny wirtualnej (uuid należy pozostawić takie, jakie jest). Gniazdo interfejsu sieciowego musi być połączone kablem ze switchem/routerem. Ważne: tryb passthrough nie pozwala na uruchomienie kilku serwerów wirtualnych na tym samym interfejsie sieciowym.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# virsh net-edit default
&amp;lt;network&amp;gt;
  &amp;lt;name&amp;gt;default&amp;lt;/name&amp;gt;
  &amp;lt;uuid&amp;gt;9d2343ed-4896-43fc-922e-a7b4a2f902da&amp;lt;/uuid&amp;gt;
  &amp;lt;forward dev=&amp;#039;eno2&amp;#039; mode=&amp;#039;passthrough&amp;#039;&amp;gt;
    &amp;lt;interface dev=&amp;#039;eno2&amp;#039;/&amp;gt;
  &amp;lt;/forward&amp;gt;
&amp;lt;/network&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Utworzenie i uruchomienie maszyny wirtualnej:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# virt-install --name tulipan --description &amp;#039;Tulipan - adres IP 192.168.2.51&amp;#039; --ram 16384 --vcpus 8 --connect qemu:///system --disk size=70 --os-type fedora34 --network network=default --graphics vnc,listen=0.0.0.0,port=5901 --cdrom /var/lib/libvirt/images/Fedora-Server-dvd-x86_64-34-1.2.iso --noautoconsole&lt;/pre&gt;

&lt;p&gt;
Do konsoli (w której jest instalator) można podłączyć się graficznym programem Remmina pod adresem:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vnc://ip.serwera.fizycznego.hosta:5901 &lt;/pre&gt;

&lt;p&gt;
Po zakończeniu pracy instalatora wirtualny serwer nie uruchomi się ponownie, ponieważ nie ma ustawionego autostartu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# virsh list --all
 Id   Name          State
------------------------------
 -    tulipan   shut off&lt;/pre&gt;

&lt;p&gt;
Uruchomienie serwera wirtualnego po instalacji:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# virsh start --domain tulipan&lt;/pre&gt;

&lt;p&gt;
W tej chwili na serwer można dostać się przez vnc, lub ssh.
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Fizyczny interfejs sieciowy dla wirtualki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fizyczny_interfejs_sieciowy_dla_wirtualki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;35-3754&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;br0_dla_wirtualek&quot;&gt;br0 dla wirtualek&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Ustawienie interfejsu br0, współdzielonego przez fizyczną maszynę oraz wirtualki.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# nmcli connection add type bridge ifname virt-br0
# nmcli connection modify bridge-virt-br0 bridge.stp no
# nmcli con modify bridge-virt-br0 ipv4.method manual ipv4.address &amp;quot;192.168.200.20/24&amp;quot; ipv4.gateway &amp;quot;192.168.200.1&amp;quot;  ipv4.dns &amp;quot;192.168.200.5&amp;quot; ipv4.dns-search ping.local
# nmcli connection modify bridge-virt-br0 autoconnect yes
# nmcli connection add type bridge-slave ifname eno1 master virt-br0
# nmcli connection modify bridge-slave-eno1 autoconnect yes&lt;/pre&gt;

&lt;p&gt;
A teraz konfiguracja virsha:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cat virsh-br0.xml 
&amp;lt;network&amp;gt;
  &amp;lt;name&amp;gt;br0&amp;lt;/name&amp;gt;
  &amp;lt;forward mode=&amp;#039;bridge&amp;#039;/&amp;gt;
  &amp;lt;bridge name=&amp;#039;virt-br0&amp;#039;/&amp;gt;
&amp;lt;/network&amp;gt;

# virsh net-create virsh-br0.xml
# virsh net-autostart br0
# virsh net-start br0&lt;/pre&gt;

&lt;p&gt;
I tworzenie wirtualki:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# virt-install --name wirtualka.ping.local --description &amp;#039;wirtualka.ping.local 192.168.200.50&amp;#039; --ram 8192 --vcpus 4 --connect qemu:///system --disk size=20 --network network=br0 --graphics vnc,listen=0.0.0.0,port=5901 --cdrom /var/lib/libvirt/images/CentOS-Stream-8-x86_64-latest-dvd1.iso --noautoconsole&lt;/pre&gt;
&lt;hr /&gt;

&lt;/div&gt;

&lt;h4 id=&quot;migracja_vk-ki_na_inny_host&quot;&gt;Migracja VK-ki na inny host&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Zakładam, że obydwa serwery są podobnie skonfigurowane, to znaczy mają pliki qcow w tym samym katalogu oraz mają takie same interfejsy sieciowe dla wirtualek. Na źródle:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /var/lib/libvirt/images
scp vmka.qcow nowy_host:/var/lib/libvirt/images/
virsh dumpxml vmka&lt;/pre&gt;

&lt;p&gt;
Należy skopiować kod xml do schowka. Na nowym serwerze:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vim /tmp/vmka.xml&lt;/pre&gt;

&lt;p&gt;
i wkleić tam kod xml. Potem:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;virsh define /tmp/vmka.xml
rm /tmp/vmka.xml
virsh start --domain vmka&lt;/pre&gt;

&lt;p&gt;
Można potem jeszcze poprawić vmkę poprzez:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;virsh edit vmka&lt;/pre&gt;

&lt;p&gt;
i poprawić jej port vnc na nieużywany przez inne maszyny.
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;br0 dla wirtualek&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;br0_dla_wirtualek&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3755-5576&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;kompresja_obrazu_dysku&quot;&gt;Kompresja obrazu dysku&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Pliki qcow2 z czasem stają się większe. Wynika to ze zwykłego na zapisywania plików przez wirtualkę oraz tworzenia i usuwania snapshotów. Należy zatrzymać wirtualkę i skompresować obraz.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;qemu-img convert -O qcow2 -c maria.qcow2 maria2.qcow2
rm maria.qcow2
mv maria2.qcow2 maria.qcow2&lt;/pre&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Kompresja obrazu dysku&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kompresja_obrazu_dysku&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;5577-5920&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;dodanie_dysku_do_maszyny_wirtualnej&quot;&gt;Dodanie dysku do maszyny wirtualnej&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;cd /var/lib/libvirt/images
qemu-img create -f qcow2 vmka-data.qcow2 110G -o preallocation=metadata
virsh attach-disk vmka --source /var/lib/libvirt/images/vmka-data.qcow2 --target vdb --cache none --persistent&lt;/pre&gt;

&lt;p&gt;
W pliku konfiguracyjnym maszyny wirtualnej nowy dysk doda się wpis o nowych dysku z formatem &lt;em&gt;raw&lt;/em&gt;, co uniemożliwia wykonanie kopii migawkowej. Należy zmienić linijkę opisującą nowy dysk z 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;driver name=&amp;#039;qemu&amp;#039; type=&amp;#039;raw&amp;#039; cache=&amp;#039;none&amp;#039;/&amp;gt;&lt;/pre&gt;

&lt;p&gt;
na 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;driver name=&amp;#039;qemu&amp;#039; type=&amp;#039;qcow2&amp;#039; cache=&amp;#039;none&amp;#039;/&amp;gt;&lt;/pre&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dodanie dysku do maszyny wirtualnej&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dodanie_dysku_do_maszyny_wirtualnej&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;5921-6496&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;net-autortart&quot;&gt;net-autortart&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
W przypadku błędu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# virsh net-autostart br0
error: failed to mark network br0 as autostarted
error: Requested operation is not valid: cannot set autostart for transient network&lt;/pre&gt;

&lt;p&gt;
należy 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# virsh net-edit br0&lt;/pre&gt;

&lt;p&gt;
dodać pustą linię na końcu oraz zapisać, a potem
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# virsh net-autostart br0
Network br0 marked as autostarted&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;net-autortart&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;net-autortart&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;6497-6864&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;uruchomienie_wirtualki_z_plyty&quot;&gt;Uruchomienie wirtualki z płyty&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Scenariusz: maszyna wirtualna testowycentos9 się nie uruchamia, ponieważ system plików na partycji root jest uszkodzony. Należy wyłączyć wirtualkę i naprawić system plików za pomocą xfs_repair.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;virsh destroy --domain testowycentos9
virsh edit --domain testowycentos9&lt;/pre&gt;

&lt;p&gt;
Trzeba poprawić sekcję os:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;os&amp;gt;
  &amp;lt;type arch=&amp;#039;x86_64&amp;#039; machine=&amp;#039;pc-q35-rhel8.6.0&amp;#039;&amp;gt;hvm&amp;lt;/type&amp;gt;
  &amp;lt;boot dev=&amp;#039;hd&amp;#039;/&amp;gt;
&amp;lt;/os&amp;gt;&lt;/pre&gt;

&lt;p&gt;
na 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;os&amp;gt;
  &amp;lt;type arch=&amp;#039;x86_64&amp;#039; machine=&amp;#039;pc-q35-rhel8.6.0&amp;#039;&amp;gt;hvm&amp;lt;/type&amp;gt;
  &amp;lt;boot dev=&amp;#039;cdrom&amp;#039;/&amp;gt;
&amp;lt;/os&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Trzeba również umieścić „płytkę” w napędzie cd. Poprawić:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;disk type=&amp;#039;file&amp;#039; device=&amp;#039;cdrom&amp;#039;&amp;gt;
  &amp;lt;driver name=&amp;#039;qemu&amp;#039; type=&amp;#039;raw&amp;#039;/&amp;gt;
  &amp;lt;target dev=&amp;#039;sda&amp;#039; bus=&amp;#039;sata&amp;#039;/&amp;gt;
  &amp;lt;readonly/&amp;gt;
  &amp;lt;address type=&amp;#039;drive&amp;#039; controller=&amp;#039;0&amp;#039; bus=&amp;#039;0&amp;#039; target=&amp;#039;0&amp;#039; unit=&amp;#039;0&amp;#039;/&amp;gt;
&amp;lt;/disk&amp;gt;&lt;/pre&gt;

&lt;p&gt;
na (przykładowo, ponieważ ścieżka do pliku iso może być inna):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;disk type=&amp;#039;file&amp;#039; device=&amp;#039;cdrom&amp;#039;&amp;gt;
  &amp;lt;driver name=&amp;#039;qemu&amp;#039; type=&amp;#039;raw&amp;#039;/&amp;gt;
  &amp;lt;target dev=&amp;#039;sda&amp;#039; bus=&amp;#039;sata&amp;#039;/&amp;gt;
  &amp;lt;source file=&amp;#039;/var/lib/libvirt/images/CentOS-Stream-9-latest-x86_64-dvd1.iso&amp;#039;/&amp;gt;
  &amp;lt;readonly/&amp;gt;
  &amp;lt;address type=&amp;#039;drive&amp;#039; controller=&amp;#039;0&amp;#039; bus=&amp;#039;0&amp;#039; target=&amp;#039;0&amp;#039; unit=&amp;#039;0&amp;#039;/&amp;gt;
&amp;lt;/disk&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Zapisać plik oraz uruchomić wirtualkę.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;virsh start --domain testowycentos9&lt;/pre&gt;

&lt;p&gt;
Teraz wystarczy się połączyć z konsolą przez vnc, wybrać tryb ratunkowy w instalatorze CentOS-a, a w nim tryb numer 3, żeby po prostu uruchomić basha. Potem trzeba wykryć i aktywować LVM oraz użyć xfs_repair na uszkodzonym woluminie. Można potem spróbować wyłączyć system za pomocą „shutdown -h now”, ale nie zawsze się to udaje. Jeżeli wirtualka będzie nadal działać, można ją wyłączyć za pomocą nadzorcy:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;virsh destroy --domain testowycentos9&lt;/pre&gt;

&lt;p&gt;
Trzeba teraz wyedytować konfigurację wirtualki i poprawić &lt;em&gt;cdrom&lt;/em&gt; na &lt;em&gt;hd&lt;/em&gt; w sekcji os. Po jej ponownym starcie:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;virsh start --domain testowycentos9&lt;/pre&gt;

&lt;p&gt;
uruchomi się poprawnie.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Uruchomienie wirtualki z p\u0142yty&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;uruchomienie_wirtualki_z_plyty&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;6865-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:letsencrypt&amp;rev=1698210311">
        <dc:format>text/html</dc:format>
        <dc:date>2023-10-25T05:05:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>letsencrypt</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:letsencrypt&amp;rev=1698210311</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;let_s_encrypt&quot;&gt;Let&amp;#039;s Encrypt&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Różne zapiski.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Let&amp;#039;s Encrypt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;let_s_encrypt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-47&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;blad_na_centos_9&quot;&gt;Błąd na CentOS 9&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Certbot nie potrafi obsłużyć Apache na CentOS 9. Rozwiązenie to zakomentowanie wyjątku z kodzie certbota:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/usr/lib/python3.9/site-packages/certbot_apache/_internal/apache_util.py

# Small errors that do not impede
if proc.returncode != 0:
    logger.warning(&amp;quot;Error in checking parameter list: %s&amp;quot;, stderr)
    #raise errors.MisconfigurationError(
    #    &amp;quot;Apache is unable to check whether or not the module is &amp;quot;
    #    &amp;quot;loaded because Apache is misconfigured.&amp;quot;)&lt;/pre&gt;

&lt;p&gt;
Po każdej aktualizacji certbota trzeba to zrobić od nowa. Przynajmniej do czasu rozwiązania problemu przez autorów.
&lt;/p&gt;

&lt;p&gt;
źródło - &lt;a href=&quot;https://github.com/certbot/certbot/issues/8945#issuecomment-1185054399&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/certbot/certbot/issues/8945#issuecomment-1185054399&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/certbot/certbot/issues/8945#issuecomment-1185054399&lt;/a&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Jeżeli w logach letsencrypta pojawia się linijka:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;The error was: NoInstallationError(&amp;quot;Could not find a usable &amp;#039;nginx&amp;#039; binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.&amp;quot;)&lt;/pre&gt;

&lt;p&gt;
oznacza to, że trzeba poprawić crona certbota z:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;31 10 * * * /usr/bin/certbot renew --post-hook &amp;quot;systemctl reload nginx&amp;quot;&lt;/pre&gt;

&lt;p&gt;
na
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;31 10 * * * /usr/bin/certbot --nginx-ctl /usr/sbin/nginx renew --post-hook &amp;quot;systemctl reload nginx&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Godzina i ścieżka do nginxa mogą być oczywiście inne.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;B\u0142\u0105d na CentOS 9&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;blad_na_centos_9&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;48-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:leworeczny&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>leworeczny</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:leworeczny&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;mapowanie_klawiatury_numerycznej_dla_leworecznych&quot;&gt;Mapowanie klawiatury numerycznej dla leworęcznych.&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/sh
# mapowanie klawiatury dla lewej reki

xmodmap -e &amp;quot;keycode 79 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4&amp;quot;
xmodmap -e &amp;quot;keycode 84 = F5 F5 F5 F5 F5 F5 XF86Switch_VT_5&amp;quot;
xmodmap -e &amp;quot;keycode 90 = Super_L&amp;quot;
xmodmap -e &amp;quot;keycode 87 = c&amp;quot;
xmodmap -e &amp;quot;keycode 88 = v&amp;quot;
xmodmap -e &amp;quot;keycode 80 = Alt_L&amp;quot;
xmodmap -e &amp;quot;keycode 83 = Tab ISO_Left_Tab Tab ISO_Left_Tab&amp;quot;
xmodmap -e &amp;quot;keycode 89 = Control_R&amp;quot;
xmodmap -e &amp;quot;add control = Control_L Control_R&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Instrukcja:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 8 - alt&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 7 - F4&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 4 - tab&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 3 - prawy ctrl&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2 - c&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 1 - v&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 0 - win/meta&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:licencje_programow_rpm&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>licencje_programow_rpm</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:licencje_programow_rpm&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;licencje_programow_z_pakietow_rpm&quot;&gt;Licencje programów z pakietów RPM&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Sprawdzenie wszystkich licencji z zainstalowanych pakietów:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ rpm -qa --qf &amp;quot;%{license}: %{name}\n&amp;quot; | sort&lt;/pre&gt;

&lt;p&gt;
Ranking różnych licencji:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ rpm -qa --qf &amp;quot;%{license}:%{name}\n&amp;quot; | cut -d&amp;#039;:&amp;#039; -f1 | sort -u &amp;gt; licenses
$ IFS=$&amp;#039;\n&amp;#039;
$ for lic in `cat licenses` ; do echo -n &amp;quot;${lic}---&amp;quot; ; rpm -qa --qf &amp;quot;%{license}: %{name}\n&amp;quot; | grep ${lic} | wc -l ; done&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:listasql&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>listasql</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:listasql&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;lista_zapytan_w_marii_mysql&quot;&gt;Lista zapytań w Marii/MySQL&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;show full processlist;
select * from information_schema.processlist order by Time;
SELECT * FROM information_schema.processlist where command = &amp;#039;execute&amp;#039; order by Time;&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:losowik&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>losowik</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:losowik&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Losowe słowo w Bashu.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;losowik()
{
  cat /dev/urandom | tr -dc &amp;#039;a-zA-Z0-9&amp;#039; | fold -w ${1:-32} | head -n 1
}&lt;/pre&gt;

&lt;p&gt;
Obsługa:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ losowik 19&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:lvm&amp;rev=1731433648">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-12T17:47:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lvm</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:lvm&amp;rev=1731433648</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;slowniczek_lvm&quot;&gt;Słowniczek LVM&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Założenie:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; pusty dysk /dev/sdb o wielkości 1024 &lt;abbr title=&quot;Gigabyte&quot;&gt;GB&lt;/abbr&gt;,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; potrzeba trzech partycji: swap, /, /var,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; host ma nazwę tupcio.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Miejsce na wolumeny:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pvcreate /dev/sdb
vgcreate tupcio /dev/sdb&lt;/pre&gt;

&lt;p&gt;
Tworzenie wolumenów:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lvcreate -n swap -L 1G tupcio
lvcreate -n root -L 20G tupcio
lvcreate -n var -L 800G tupcio&lt;/pre&gt;

&lt;p&gt;
Formatowanie:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkswap /dev/tupcio/swap
mkfs -t ext4 /dev/tupcio/root
mkfs -t ext4 /dev/tupcio/var&lt;/pre&gt;

&lt;p&gt;
Powiększanie wolumenów (po uprzednim powiększeniu dysku sdb):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;#039;1&amp;#039; &amp;gt; /sys/class/scsi_disk/0\:0\:0\:1/device/rescan
pvresize /dev/sdb
lvextend -L +500G /dev/tupcio/var
resize2fs /dev/tupcio/var&lt;/pre&gt;

&lt;p&gt;
Wypisanie danych o LVMie:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pvscan
vgscan
lvscan&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:manen&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>manen</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:manen&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Man po angielsku
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;LANG=C man apropos&lt;/pre&gt;

&lt;p&gt;
Stosowy alias:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;men=&amp;#039;LANG=C man&amp;#039;&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:mariadb_replika&amp;rev=1769528287">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-27T15:38:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>mariadb_replika</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:mariadb_replika&amp;rev=1769528287</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;replikacja_mariadb&quot;&gt;Replikacja MariaDB&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Replikacja MariaDB&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;replikacja_mariadb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-36&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;najprostsza_replikacja&quot;&gt;Najprostsza replikacja&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Dwa serwery:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; maria1.ping.local - primary,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; maria2.ping.local - replika, tylko do odczytu.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h5 id=&quot;konfiguracja_maria1&quot;&gt;Konfiguracja maria1&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Sekcja [mariadb] z pliku /etc/my.cnf.d/mariadb-server.cnf
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]
log-bin
server_id=1
log-basename=master1
binlog-format=mixed&lt;/pre&gt;

&lt;p&gt;
Należy zrestartować MariaDB, żeby zaczytała zmiany. W shellu mysql:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;MariaDB [(none)]&amp;gt; CREATE USER &amp;#039;replication_user&amp;#039;@&amp;#039;%&amp;#039; IDENTIFIED BY &amp;#039;qwerty123&amp;#039;;
MariaDB [(none)]&amp;gt; GRANT REPLICATION SLAVE ON *.* TO &amp;#039;replication_user&amp;#039;@&amp;#039;%&amp;#039;;
MariaDB [(none)]&amp;gt; FLUSH TABLES WITH READ LOCK;
MariaDB [(none)]&amp;gt; show master status;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| master1-bin.000004 |      344 |              |                  |
+--------------------+----------+--------------+------------------+
1 row in set (0.001 sec)&lt;/pre&gt;

&lt;p&gt;
Nazwa użytkownika oraz jego hasło może być inne. Należy wyeksportować wszystkie bazy danych do pliku:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mysqldump --all-databases &amp;gt; /home/lukasz/bazy_danych.sql&lt;/pre&gt;

&lt;p&gt;
Plik należy pobrać (na przykład programem scp) oraz wysłać na serwer maria2.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;konfiguracja_maria2&quot;&gt;Konfiguracja maria2&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Sekcja [mariadb] z pliku /etc/my.cnf.d/mariadb-server.cnf
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]
log-bin
server_id=2
#read_only=1 # potem odkomentowac&lt;/pre&gt;

&lt;p&gt;
Należy zrestartować MariaDB, żeby zaczytała zmiany. Następnie trzeba zaimportować bazy danych z serwera maria1:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mysql &amp;lt; /home/lukasz/bazy_danych.sql&lt;/pre&gt;

&lt;p&gt;
Potem w shellu mysql:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;change master to master_host=&amp;#039;maria1.ping.local&amp;#039;, master_user=&amp;#039;replication_user&amp;#039;, master_password=&amp;#039;qwerty123&amp;#039;, master_port=3306, master_log_file=&amp;#039;master1-bin.000004&amp;#039;, master_log_pos=334, master_connect_retry=10;&lt;/pre&gt;

&lt;p&gt;
Następnie należy odkomentować lnijkę &lt;em&gt;#read_only=1&lt;/em&gt; w pliku mariadb-server.conf, dzięki czemu użytkownicy bez uprawnień SUPER nie będą mogli modyfikować bazy danych. Po zamianie pliku należy zrestartować bazę danych.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;sprzatanie_i_uruchomienie_replikacji&quot;&gt;Sprzątanie i uruchomienie replikacji&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
W shellu bazy danych na serwerze maria1 można już zdjąć blokady:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;MariaDB [(none)]&amp;gt; unlock tables;&lt;/pre&gt;

&lt;p&gt;
W shellu bazy danych na serwerze maria2 upewnić się, że replikacja przebiega pomyślnie:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;MariaDB [(none)]&amp;gt; start slave;
MariaDB [(none)]&amp;gt; show slave status;
+----------------------------------+-------------------+------------------+-------------+---------------+--------------------+---------------------+--------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+-----------------------------+------------------+----------------+--------------------+------------+-------------+-------------------------+-----------------------------+---------------+-----------+---------------------+--------------------------------------------------------+------------------+--------------------------------+----------------------------+
| Slave_IO_State                   | Master_Host       | Master_User      | Master_Port | Connect_Retry | Master_Log_File    | Read_Master_Log_Pos | Relay_Log_File           | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master | Master_SSL_Verify_Server_Cert | Last_IO_Errno | Last_IO_Error | Last_SQL_Errno | Last_SQL_Error | Replicate_Ignore_Server_Ids | Master_Server_Id | Master_SSL_Crl | Master_SSL_Crlpath | Using_Gtid | Gtid_IO_Pos | Replicate_Do_Domain_Ids | Replicate_Ignore_Domain_Ids | Parallel_Mode | SQL_Delay | SQL_Remaining_Delay | Slave_SQL_Running_State                                | Slave_DDL_Groups | Slave_Non_Transactional_Groups | Slave_Transactional_Groups |
+----------------------------------+-------------------+------------------+-------------+---------------+--------------------+---------------------+--------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+-----------------------------+------------------+----------------+--------------------+------------+-------------+-------------------------+-----------------------------+---------------+-----------+---------------------+--------------------------------------------------------+------------------+--------------------------------+----------------------------+
| Waiting for master to send event | maria1.ping.local | replication_user |        3306 |            10 | master1-bin.000004 |                 344 | mariadb-relay-bin.000012 |           645 | master1-bin.000004    | Yes              | Yes               |                 |                     |                    |                        |                         |                             |          0 |            |            0 |                 344 |            1257 | None            |                |             0 | No                 |                    |                    |                 |                   |                |                     0 | No                            |             0 |               |              0 |                |                             |                1 |                |                    | No         |             |                         |                             | optimistic    |         0 |                NULL | Slave has read all relay log; waiting for more updates |                0 |                              0 |                          0 |
+----------------------------------+-------------------+------------------+-------------+---------------+--------------------+---------------------+--------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+-----------------------------+------------------+----------------+--------------------+------------+-------------+-------------------------+-----------------------------+---------------+-----------+---------------------+--------------------------------------------------------+------------------+--------------------------------+----------------------------+
1 row in set (0.000 sec)&lt;/pre&gt;

&lt;p&gt;
Można dla pewności założyć nową bazę danych na serwerze maria1, utworzyć tabelę i dodać kilka wierszy.
&lt;/p&gt;

&lt;p&gt;
W shellu bazy maria2, używając nieuprzywilejowanego użytkownika, efekt będzie taki:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mysql -u statyk -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.5.9-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type &amp;#039;help;&amp;#039; or &amp;#039;\h&amp;#039; for help. Type &amp;#039;\c&amp;#039; to clear the current input statement.

MariaDB [(none)]&amp;gt; show slave status;
ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER, SLAVE MONITOR privilege(s) for this operation
MariaDB [(none)]&amp;gt; use statyk
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [statyk]&amp;gt; select * from dane;
+------+--------+
| id   | nazwa  |
+------+--------+
|    3 | trzy   |
|    4 | cztery |
|    5 | piec   |
+------+--------+
3 rows in set (0.001 sec)

MariaDB [statyk]&amp;gt; insert into dane (id, nazwa) values (8, &amp;#039;osiem&amp;#039;);
ERROR 1290 (HY000): The MariaDB server is running with the --read-only option so it cannot execute this statement
MariaDB [statyk]&amp;gt; &lt;/pre&gt;

&lt;p&gt;
Jako, że MariaDB w bardzo ograniczonym stopniu pozwala na konfigurację dostępu dla użytkowników z określonych adresów IP, warto upewnić się, że firewall jest poprawnie skonfigurowany. Podczas tworzenia użytkownika &lt;em&gt;replica_user&lt;/em&gt; można podać mu jeden adres IP serwera maria2, ale wówczas nie można dodać do tego zestawu kolejnych replik.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Najprostsza replikacja&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;najprostsza_replikacja&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;37-10070&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;czesciowa_replikacja&quot;&gt;Częściowa replikacja&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Można replikować tylko niektóre bazy oraz tabele. Fragment my.cnf bazy primary.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;log-bin
server_id=1
log-basename=master1
binlog-format=mixed
binlog_ignore_db=private
binlog_do_db=public001
replicate_do_table=public001.archiwum001
replicate_do_table=public001.archiwum002
replicate_do_table=public001.stare001
replicate_ignore_table=public001.nowe
replicate_wild_do_table=public001.archiwum0%&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; log-bin - utworzenie logów transakcyjnych&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; server_id=1 - unikalny identyfikator klastra&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; log-basename=master1 - nazwa plików loga transakcyjnego dla parametru log-bin&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; binlog-format=mixed - log transakcyjny sam wybiera format swojego zapisu; jest to zresztą wartośc domyślna; &lt;a href=&quot;https://mariadb.com/kb/en/binary-log-formats/#mixed-logging&quot; class=&quot;urlextern&quot; title=&quot;https://mariadb.com/kb/en/binary-log-formats/#mixed-logging&quot; rel=&quot;ugc nofollow&quot;&gt;https://mariadb.com/kb/en/binary-log-formats/#mixed-logging&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; binlog_ignore_db=private - zdarzenia na bazie danych „private” nie będą w logu transakcyjnym&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; binlog_do_db=public001 - zdarzenia na bazie danych „public001” będą w logu transakcyjnym&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; replicate_do_table=public001.archiwum001 - zdarzenia w tabeli „archiwum001” bazy „public001” będą w logu transakcyjnym&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; replicate_do_table=public001.archiwum002 - zdarzenia w tabeli „archiwum002” bazy „public001” będą w logu transakcyjnym&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; replicate_do_table=public001.stare001 - zdarzenia w tabeli „stare001” bazy „public001” będą w logu transakcyjnym&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; replicate_ignore_table=public001.nowe - zdarzenia w tabeli „nowe” bazy „public001” nie będą w logu transakcyjnym, &lt;strong&gt;ale tak naprawdę będą&lt;/strong&gt; ; wygląda na to, że binlog_do_db przeważa nad replicate_ignore_table&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; replicate_wild_do_table=public001.archiwum0% - zdarzenia w tabelach o nazwie podobnej do „archiwum0%” bazy „public001” będą w logu transakcyjnym&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; binlog_do_db=public001 przeważa nad replicate_ignore_table. Oznacza to, że zdarzenia dotyczące tabeli „nowe” będą trafiały do loga transakcyjnego i dane pojawią się na replikach.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Weryfikacja stanu replikacji po restarcie primary:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;MariaDB [(none)]&amp;gt; show master status;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| master1-bin.000001 | 1634     | public001    | private          |
+--------------------+----------+--------------+------------------+
1 row in set (0.000 sec)&lt;/pre&gt;

&lt;p&gt;
Użytkownik replikacyjny na primary:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;MariaDB [(none)]&amp;gt; CREATE USER &amp;#039;replication_user&amp;#039;@&amp;#039;%&amp;#039; IDENTIFIED BY &amp;#039;qwerty123&amp;#039;;
MariaDB [(none)]&amp;gt; GRANT REPLICATION SLAVE ON *.* TO &amp;#039;replication_user&amp;#039;@&amp;#039;%&amp;#039;;&lt;/pre&gt;

&lt;p&gt;
Fragment my.cnf repliki:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;log-bin
server_id=5
read_only=1&lt;/pre&gt;

&lt;p&gt;
Rozpoczęcie replikacji na klastrze nr 5:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;MariaDB [(none)]&amp;gt; change master to master_host=&amp;#039;maria1.cez.local&amp;#039;, master_user=&amp;#039;replication_user&amp;#039;, master_password=&amp;#039;qwerty123&amp;#039;, master_port=3306, master_log_file=&amp;#039;master1-bin.000001&amp;#039;, master_log_pos=0, master_connect_retry=10;&lt;/pre&gt;

&lt;p&gt;
Dane na klastrze nr 5 mogą wyglądać na przykład tak:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;MariaDB [public001]&amp;gt; select * from archiwum002;
+----+--------------------+
| id | dane               |
+----+--------------------+
| 12 | dane do replikacji |
| 14 | dane do replikacji |
+----+--------------------+
2 rows in set (0.001 sec)&lt;/pre&gt;

&lt;p&gt;
Nie ma tu wierszy od 1 do 11, ponieważ zostały utworzone przed zestawieniem replikacji. Usunięcie wierszy o tych identyfikatorach będzie w logu transakcyjnym, ale bez wpływu na replikę. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cz\u0119\u015bciowa replikacja&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;czesciowa_replikacja&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;10071-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:minipodrecnikeducd&amp;rev=1730534482">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-02T08:01:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>minipodrecnikeducd</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:minipodrecnikeducd&amp;rev=1730534482</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;linux_edu-cd_podrecznik&quot;&gt;Linux Edu-CD podręcznik&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Kolejna ciekawostka wygrzebana ze starego &lt;abbr title=&quot;File Transfer Protocol&quot;&gt;FTP&lt;/abbr&gt;. Podręcznik Linux Edu-CD autorstwa Rajmunda. Swojego czasu działał bardzo prężnie nad klonem Knoppix-a, dostosowanego dla potrzeb polskiej edukacji. Bardzo fachowa książka. Kilka rzeczy oczywiście jest już nieaktualnych, ale i tak fajnie się czyta.
&lt;/p&gt;

&lt;p&gt;
Mamy tu między innymi konfigurację LSTP oraz cienkich klientów. Dzisiaj temat wraca - co prawda w wydaniu chmurowym - ale warto wiedzieć, że można to osiągnąć również w sieci lokalnej.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:minipodrecznik041.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;wiki:minipodrecznik041.pdf (1.9 MB)&quot;&gt;minipodrecznik041.pdf&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:mm6_solo_cleric&amp;rev=1669411618">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-25T21:26:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>mm6_solo_cleric</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:mm6_solo_cleric&amp;rev=1669411618</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;mm6_solo_cleric_734_level&quot;&gt;MM6 solo cleric 734 level&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
I hope You&amp;#039;ll enjoy this. Below are savegames from my solo cleric run of Might and Magic VI: the Mandate of Heaven. I burned many hours into it and I&amp;#039;m not willing to grind that character any longer. Saves are applicable to MM6 with a Grayface patch 1.3, so GOG version is working.
&lt;/p&gt;

&lt;p&gt;
Have fun!
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:mm6_saves.zip&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:mm6_saves.zip&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:mm6_saves.zip&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Amm6_solo_cleric&amp;amp;media=wiki:todd.jpg&quot; class=&quot;media&quot; title=&quot;wiki:todd.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=4156c7&amp;amp;media=wiki:todd.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:mod-itk&amp;rev=1767338050">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-02T07:14:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>mod-itk</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:mod-itk&amp;rev=1767338050</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;apache_mod_itk&quot;&gt;Apache mod_itk&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Ostrzeżenie.&lt;/strong&gt; Mod-itk to już martwy projekt. Nadal działa jednak bardzo dobrze i może być przydatny na środowiskach bez kontenerów, gdzie jest potrzeba izolacji poszczególnych aplikacji.
&lt;/p&gt;

&lt;p&gt;
Pakiety RPM httpd-itk można pobrać z &lt;a href=&quot;https://copr.fedorainfracloud.org/coprs/seem/httpd-itk/&quot; class=&quot;urlextern&quot; title=&quot;https://copr.fedorainfracloud.org/coprs/seem/httpd-itk/&quot; rel=&quot;ugc nofollow&quot;&gt;https://copr.fedorainfracloud.org/coprs/seem/httpd-itk/&lt;/a&gt;. Niektóre dystrybucje jeszcze je dostarczają, ale już coraz rzadziej.
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Apache mod_itk&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;apache_mod_itk&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-408&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;opis_dzialania&quot;&gt;Opis działania&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Apache otrzymują żądanie http przez protokół https. Wówczas mod-itk niczego jeszcze nie robi.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Apache rozszywa zapytanie używając modułu mod_ssl.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Używając dyrektywy &lt;em&gt;AssignUserId&lt;/em&gt; z konfiguracji wirtualnego hosta Apache używa uprawnień dedykowanego użytkownika do operacji na plikach oraz proxy fcgi.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Biorąc pod uwagę mankament z pierwszego punktu, warto rozszywać ruch https za pomocą dedykowanego proxy, na przykład Nginxa, HAProxy, lub nawet innego Apache. 
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Opis dzia\u0142ania&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;opis_dzialania&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;409-936&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;instalacja_i_konfiguracja&quot;&gt;Instalacja i konfiguracja&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Należy zainstalować pakiety httpd, httpd-itk, php-fpm, potrzebne moduły PHP-a oraz Apacha.
&lt;/p&gt;

&lt;p&gt;
Po instalacji pakiety httpd-itk, należy zmienić moduł MPM w pliku &lt;em&gt;/etc/httpd/conf.modules.d/00-mpm.conf&lt;/em&gt; z:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;LoadModule mpm_event_module modules/mod_mpm_event.so&lt;/pre&gt;

&lt;p&gt;
na 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;LoadModule mpm_prefork_module modules/mod_mpm_prefork.so&lt;/pre&gt;

&lt;p&gt;
Moduł prefork działa wolniej, niż event, ale do prostych stron typu Wordpress, Mantis, czy Nextcloud w zupełności wystarczy.
&lt;/p&gt;

&lt;p&gt;
Teraz trzeba odkomentować linijkę
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;LoadModule mpm_itk_module modules/mod_mpm_itk.so&lt;/pre&gt;

&lt;p&gt;
w pliku &lt;em&gt;/etc/httpd/conf.modules.d/00-mpm-itk.conf&lt;/em&gt;. Potem trzeba zrestartować Apache. Przeładowanie nie wystarczy i Apache się zawiesi.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl restart httpd&lt;/pre&gt;

&lt;p&gt;
Tworzenie użytkownika aplikacyjnego:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;useradd -u 2001 -d /var/www/mojastronapl/ -s /sbin/nologin mojastronapl
mkdir /var/www/mojastronapl/public_html
chown -R mojastronapl:mojastronapl /var/www/mojastronapl
chmod 700 /var/www/mojastronapl
chmod 700 /var/www/mojastronapl/public_html
semanage fcontext -m -t httpd_sys_rw_content_t &amp;#039;/var/www/mojastronapl(/.*)?&amp;#039;
restorecon -Rv /var/www/mojastronapl&lt;/pre&gt;

&lt;p&gt;
W pliku wirtualnego hosta, w sekcji &lt;em&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;/em&gt; (tam, gdzie jest również &lt;em&gt;ServerName&lt;/em&gt;), dodać linijkę
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;AssignUserId mojastronapl mojastronapl&lt;/pre&gt;

&lt;p&gt;
W pliku &lt;em&gt;/etc/php-fpm.d/mojastrona.pl.conf&lt;/em&gt; można dodać dwie nowe linijki:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;listen.owner = mojastronapl
listen.group = mojastronapl&lt;/pre&gt;

&lt;p&gt;
Teoretycznie wystarczy teraz przeładować php-fpm oraz httpd, ale restart zapewni zabicie starych procesów, używających jeszcze uprawnień Apache.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Instalacja i konfiguracja&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;instalacja_i_konfiguracja&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;937-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:montowanie_samby&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>montowanie_samby</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:montowanie_samby&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Linijka w /etc/fstab do ręcznego montowania samby:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;//192.168.xxx.yyy/[nazwa_udziału] /mnt/DYSK cifs user=[użytkownik],pass=[hasło],auto 0 0&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:mucode&amp;rev=1761048045">
        <dc:format>text/html</dc:format>
        <dc:date>2025-10-21T12:00:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>mucode</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:mucode&amp;rev=1761048045</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;mu_code_w_starej_wersji&quot;&gt;Mu Code w starej wersji&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Do nauki Pythona polecam bardzo edytor Mu, ale w starej wersji, kiedy był dedykowany prawie tylko do małych komputerków MicroBit. Jeżeli masz do nich dostęp, możesz nadal używać Mu 0.9.12, ale trzeba go trochę poprawić.
&lt;/p&gt;

&lt;p&gt;
Najpierw trzeba zrobić venva przy użyciu Pythona 3.12. Potem zainstalować zależności:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;alabaster==1.0.0
babel==2.17.0
certifi==2025.10.5
charset-normalizer==3.4.4
coverage==7.11.0
docutils==0.21.2
idna==3.11
imagesize==1.4.1
iniconfig==2.1.0
Jinja2==3.1.6
MarkupSafe==3.0.3
packaging==25.0
pluggy==1.6.0
pycodestyle==2.14.0
pyflakes==3.4.0
Pygments==2.19.2
PyQt5==5.15.11
PyQt5-Qt5==5.15.17
PyQt5_sip==12.17.1
pyserial==3.5
pytest==8.4.2
pytest-cov==7.0.0
QScintilla==2.14.1
requests==2.32.5
roman-numerals-py==3.1.0
setuptools==80.9.0
snowballstemmer==3.0.1
Sphinx==8.2.3
sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0
sphinxcontrib-htmlhelp==2.1.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
urllib3==2.5.0&lt;/pre&gt;

&lt;p&gt;
Trochę przerobiony Mu: &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:mu-0.9.12-py312.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;wiki:mu-0.9.12-py312.zip (1.4 MB)&quot;&gt;mu-0.9.12-py312.zip&lt;/a&gt; . Zawiera dwie poprawki:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; szare ikonki przystosowane do ciemnego motywu,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; plik &lt;em&gt;mu/interface.py&lt;/em&gt; jest trochę zmieniony&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;777     def autosize_window(self):
778         &amp;quot;&amp;quot;&amp;quot;
779         Makes the editor 80% of the width*height of the screen and centres it.
780         &amp;quot;&amp;quot;&amp;quot;
781         screen = QDesktopWidget().screenGeometry()
782         w = 1000
783         h = 800
784         self.resize(w, h)
785         size = self.geometry()
786         self.move(10, 10)&lt;/pre&gt;

&lt;p&gt;
Po zaaplikowaniu tych dwóch poprawek program działa i nawet nieźle wygląda.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Amucode&amp;amp;media=wiki:mu01.jpg&quot; class=&quot;media&quot; title=&quot;wiki:mu01.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=d1613b&amp;amp;media=wiki:mu01.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_2341&amp;rev=1775102130">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-02T03:55:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>mvs_tk5_2341</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_2341&amp;rev=1775102130</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dodanie_dyskow_do_sortowania&quot;&gt;Dodanie dysków do sortowania&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Starsza dystrybucja TK4- miała dedykowane dyski do sortowania. Sort na TK5 jest nowszy i już nie nie potrzebuje. Problem w tym, że stary kod - napisany dla starszego typu sortowania - przestaje w rezultacie działać.
&lt;/p&gt;

&lt;p&gt;
Można na chwilę pobrać starszy TK4 - &lt;a href=&quot;https://sourceforge.net/projects/mvs380/files/mvs380/MVS_380%201.2a/Method%201%20-%20Overlay%20to%20TK4-/tk4-_v1.00_current-v05.zip/download&quot; class=&quot;urlextern&quot; title=&quot;https://sourceforge.net/projects/mvs380/files/mvs380/MVS_380%201.2a/Method%201%20-%20Overlay%20to%20TK4-/tk4-_v1.00_current-v05.zip/download&quot; rel=&quot;ugc nofollow&quot;&gt;https://sourceforge.net/projects/mvs380/files/mvs380/MVS_380%201.2a/Method%201%20-%20Overlay%20to%20TK4-/tk4-_v1.00_current-v05.zip/download&lt;/a&gt; . Nie trzeba jej uruchamiać. Potrzeba tylko skopiować pliki z katalogu dasd
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sort01.131 sort02.132 sort03.133 sort04.134 sort05.135 sort06.136&lt;/pre&gt;

&lt;p&gt;
do katalogu dasd w TK5. Potem dodać w pliki conf/tk5.cnf
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;0131 2314 dasd/sort01.131 cu=2314
0132 2314 dasd/sort02.132 cu=2314
0133 2314 dasd/sort03.133 cu=2314
0134 2314 dasd/sort04.134 cu=2314
0135 2314 dasd/sort05.135 cu=2314
0136 2314 dasd/sort06.136 cu=2314&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_dysk&amp;rev=1775498867">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-06T18:07:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>mvs_tk5_dysk</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_dysk&amp;rev=1775498867</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;nowy_dasd_w_tk5&quot;&gt;Nowy DASD w TK5&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Utworzenie nowego pliku udającego dysk 3350:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ LD_LIBRARY_PATH=./hercules/linux/64/lib/ ./hercules/linux/64/bin/dasdinit -a dasd/pendra.280 3350 PENDRA&lt;/pre&gt;

&lt;p&gt;
W pliku conf/tk5.cnf dodać nową linijkę:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;0280 3350 dasd/pendra.280 cu=3830&lt;/pre&gt;

&lt;p&gt;
co powoduje konieczność restartu całego TK5. Potem w konsoli TK5 trzeba wpisać:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;attach 280 dasd/pendra.280
/v 280,offline&lt;/pre&gt;

&lt;p&gt;
Kiedy dysk będzie w takim stanie, można uruchomić pracę zapisaną w dowolnym miejscu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;000001  //HERC01I JOB (1),ICKDSF,CLASS=H,MSGCLASS=X,NOTIFY=HERC01
000002  //ICKDSF EXEC PGM=ICKDSF,REGION=4096K
000003  //SYSPRINT DD  SYSOUT=*
000004  //SYSIN    DD  *
000005     INIT UNITADDRESS(280) NOVERIFY VOLID(PENDRA) OWNER(HERCULES) -
000006                  VTOC(0,1,30)
000007  /*
000008  //&lt;/pre&gt;

&lt;p&gt;
Inicjalizacja dysku wymaga potwierdzanie w konsoli TK5 za pomocą mechanizmu &lt;em&gt;reply&lt;/em&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;\r 0,u&lt;/pre&gt;

&lt;p&gt;
Numer 0 trzeba zastąpić podanym w komunikacie konsoli TK5 jako:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;HH:MM:SS JOB    X  *00 ICK003D&lt;/pre&gt;

&lt;p&gt;
Jeżeli emulator działa już długo bez wyłączania, to &lt;em&gt;00&lt;/em&gt; mogło już kiedyś nastąpić i numer do potwierdzenia będzie większy.
&lt;/p&gt;

&lt;p&gt;
Uruchamianie i montowanie dysku:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/v 280,online
/m 280,vol=(sl,pendra)use=private&lt;/pre&gt;

&lt;p&gt;
Odpowiednikiem &lt;em&gt;fstab&lt;/em&gt; jest tutaj &lt;em&gt;SYS1.PARMLIB(VATLST00)&lt;/em&gt;, do którego można dodać linijkę:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;000012 PENDRA,1,2,3350    ,N                  PENDRAJW&lt;/pre&gt;
&lt;hr /&gt;

&lt;p&gt;
Ten dysk jest trochę dziwny i emulator rozpoznaje go jako:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;P 0280 3350 DASD dasd/pendra.280 [cu 3830] [560 cyls] IO[101]&lt;/pre&gt;

&lt;p&gt;
Nie zgadza się więc ani model dysku, ani ilość cylindrów (3350 ma ich 555). Dopóki nie zacznę zapisywać danych na końcu dysku, nie powinno to być problemem. Zmiana typu dysku z 3830 na 3350 w pliku konfiguracyjnym tk5.cnf powoduje, że mvs nie może go zamontować.
&lt;/p&gt;

&lt;p&gt;
Dysk jest oznaczony jako prywatny (poprzez argument &lt;em&gt;2&lt;/em&gt; w &lt;em&gt;VATLST00&lt;/em&gt;), więc trzeba go jawnie wskazać podczas tworzenia zbioru danych zarówno w panelu, jak i w JCL.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;     NAME OF NEW DATA SET ==&amp;gt; &amp;#039;WIKI.BASZAREK.PL&amp;#039;

             RECORD FORMAT ==&amp;gt; FB
     LOGICAL RECORD LENGTH ==&amp;gt; 80
       PHYSICAL BLOCK SIZE ==&amp;gt; 3200

                    VOLUME ==&amp;gt; PENDRA
                      UNIT ==&amp;gt;

     ALLOCATION SPACE UNIT ==&amp;gt; T       ( T OR C OR B )
    PRIMARY SPACE QUANTITY ==&amp;gt; 2
  SECONDARY SPACE QUANTITY ==&amp;gt; 2
NUMBER OF DIRECTORY BLOCKS ==&amp;gt; 10&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_file_transfer&amp;rev=1775103340">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-02T04:15:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>mvs_tk5_file_transfer</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_file_transfer&amp;rev=1775103340</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;przesylanie_plikow_przez_3270&quot;&gt;Przesyłanie plików przez 3270&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Żeby przesłać lokalny plik tekstowy do emulowanego MVS, najwygodniej użyć wbudowanego w klienta 3270 mechanizmu przesyłania plików:
&lt;/p&gt;

&lt;p&gt;
W aplikacji pw3270 wygląda to jak poniżej:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Amvs_tk5_file_transfer&amp;amp;media=wiki:x3270ft.jpg&quot; class=&quot;media&quot; title=&quot;wiki:x3270ft.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=53da9d&amp;amp;media=wiki:x3270ft.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Operation: Send file&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Local file: ścieżka do wysyłanego pliku&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Remote file: nazwa docelowego zbioru danych (nie używać zbiorów wewnątrz partycjonowanych zbiorów; nie wiem dlaczego, ale to nie zadziała)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Transfer options: text file oraz Remap &lt;abbr title=&quot;American Standard Code for Information Interchange&quot;&gt;ASCII&lt;/abbr&gt; Characters spowoduje przetłumaczenie znaków na EBCDIC&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; reszta domyślnie&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_haslo&amp;rev=1774921828">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-31T01:50:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>mvs_tk5_haslo</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_haslo&amp;rev=1774921828</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;zmiana_hasla_w_mvs&quot;&gt;Zmiana hasła w MVS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Domyślne hasło użytkownika herc01 to &lt;em&gt;cul8tr&lt;/em&gt; i można je zmienić podczas logowania. Zamiast hasła trzeba wpisać:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cul8tr/asdfgh&lt;/pre&gt;

&lt;p&gt;
i hasło &lt;em&gt;asdfgh&lt;/em&gt; (lub jakiekolwiek, do ośmiu łacińskich znaków) zostanie ustawione w SYS1.SECURE.CNTL(USERS).
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_panel&amp;rev=1774924174">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-31T02:29:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>mvs_tk5_panel</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5_panel&amp;rev=1774924174</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;zmiana_domyslnego_panelu&quot;&gt;Zmiana domyślnego panelu&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
W TK5 po zalogowaniu pojawia się panel ISPF. Jest jak najbardziej „na miejscu” i funkcjonalnie zbliżony do nowszych wersji z/&lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt;. Można w nim wybrać &lt;em&gt;M&lt;/em&gt; oraz &lt;em&gt;1&lt;/em&gt;, co spowoduje uruchomienie &lt;em&gt;Review Front End&lt;/em&gt;, który dużo bardziej mi się podoba. Można również wcisnąć F3 i wpisać &lt;em&gt;rfe&lt;/em&gt; enter, co spodowuje jego uruchomienie zamiast ispf.
&lt;/p&gt;

&lt;p&gt;
Żeby to bardziej zautomatyzować, można wyedytować &lt;em&gt;SYS1.CMDPROC(ISPLOGON)&lt;/em&gt; i wpisać tam:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;000069  /* CALL &amp;#039;ISP.V2R2M0.LLIB(ISPF)&amp;#039;  */
000070     RFE&lt;/pre&gt;

&lt;p&gt;
Na kartach 70 oraz 71 były tam dwa parametry do uruchomienie ispf, ale można je zastąpić po prostu napisem RFE, co uruchomi ten panel zaraz po zalogowaniu. Jeżeli chwilowo potrzebne są dodatkowe rzeczy z nowszych paneli, można cofnąć się F3 do promptu READY i wpisać tam &lt;em&gt;ispf&lt;/em&gt; enter.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5&amp;rev=1775104701">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-02T04:38:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>mvs_tk5</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:mvs_tk5&amp;rev=1775104701</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;uruchamianie_tk5_na_linuksie&quot;&gt;Uruchamianie TK5 na Linuksie&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Uruchamianie TK5 na Linuksie&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;uruchamianie_tk5_na_linuksie&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-44&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;pobieranie&quot;&gt;Pobieranie&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Emulator Hercules oraz bardzo dużo dostępnego oprogramowania są połączone w dystrybucji TK5: &lt;a href=&quot;https://www.prince-webdesign.nl/tk5&quot; class=&quot;urlextern&quot; title=&quot;https://www.prince-webdesign.nl/tk5&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.prince-webdesign.nl/tk5&lt;/a&gt; . Do pobrania jako &lt;a href=&quot;https://www.prince-webdesign.nl/images/downloads/mvs-tk5.zip&quot; class=&quot;urlextern&quot; title=&quot;https://www.prince-webdesign.nl/images/downloads/mvs-tk5.zip&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.prince-webdesign.nl/images/downloads/mvs-tk5.zip&lt;/a&gt; . 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pobieranie&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pobieranie&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;45-284&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;wstepna_konfiguracja&quot;&gt;Wstępna konfiguracja&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
W przeciwieństwie do starszej wersji TK4-, pod Linuksem trzeba odrobinę dodatkowej pracy. Po rozpakowaniu archiwum:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cd mvs-tk5
$ chmod 750 mvs
$ chmod 750 unattended/set_console_mode
$ chmod 750 unattended/set_daemon_mode
$ chmod 700 hercules/linux/64/bin/*
$ cd hercules/linux/64/lib/
$ ln -s /usr/lib64/libbz2.so.1 libbz2.so.1.0&lt;/pre&gt;

&lt;p&gt;
Łącze w ostatniej linijce musi prowadzić do libbz2, jakby się ten plik nie nazywał. Katalogi
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; hercules/windows&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; hercules/darwin&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; hercules/linux&lt;em&gt;/nieuzywane_architektury&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
można usunąć, by nie zajmowały niepotrzebne miejsca. Warto zmienić tryb uruchamiania na konsolę, co udostępnia dodatkowe opcje administracyjne.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cd unattended
$ ./set_console_mode&lt;/pre&gt;

&lt;p&gt;
i potwerdzić enterem. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Wst\u0119pna konfiguracja&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;wstepna_konfiguracja&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;285-1073&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;uruchomienie&quot;&gt;Uruchomienie&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Można teraz uruchomić emulator oraz MVS sktyptem &lt;em&gt;mvs&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
Praca z TSO jest możliwa za pomocą graficznych aplikacji: x3270 oraz pw3270. Ten pierwszy jest prostszy i ma ładniejsze fonty, ale na najnowszych wersjach Waylanda i Gnoma przestały prawidłowo działać niektóre elementy interfejsu. pw3270  działa i wygląda tak:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Amvs_tk5&amp;amp;media=wiki:pw3270.jpg&quot; class=&quot;media&quot; title=&quot;wiki:pw3270.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=bf7024&amp;amp;media=wiki:pw3270.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
W ustawieniach bieżącej sesji trzeba wybrać host z uruchomionym TK5 (może to być 127.0.0.1), a pozostałe opcje ustawić jak widać powyżej.
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Uruchomienie&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;uruchomienie&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1074-1613&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;wylaczenie&quot;&gt;Wyłączenie&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Zabicie procesu &lt;em&gt;hercules&lt;/em&gt; może spowodować duże szkody na emulowanych dyskach oraz bliżej nieokreślony stan kolejki JES2, co z kolei uniemożliwi ponowne uruchomienie emulatora.
&lt;/p&gt;

&lt;p&gt;
Trzeba wycować się klawiszem F3 do prompta &lt;em&gt;READY&lt;/em&gt; i napisać tam kolejno:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;shutdown
logoff&lt;/pre&gt;

&lt;p&gt;
Procedura zatrzymywania systemu jest zapiasana w &lt;em&gt;sys1.parmlib(shutdown)&lt;/em&gt; . Jest tam również procedura &lt;em&gt;shutfast&lt;/em&gt;, która ma krótsze czasy czekiwania pomiędzy kolejnymi krokami.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Wy\u0142\u0105czenie&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;wylaczenie&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1614-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:my_import&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>my_import</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:my_import&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;maria_mysql_import_csv&quot;&gt;Maria/MySQL import csv&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Scenariusz:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; mam plik dni_kolory.csv zawierający kolomny: data, kolor, ilosc,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; należy zaimportować go do bazy danych, w celu łatwiejszego sortowania oraz wyszukiwania informacji.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Plik dni_kolory.csv:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;data,kolor,ilosc
2021-01-02,zielony,6
2021-01-03,niebieski,5
2021-01-04,różowy,7
2021-01-05,fiotelowy,3
2021-01-06,brązowy,5
2021-01-07,biały,7
2021-01-08,żółty,3
2021-01-09,żółty,124
2021-01-10,czerwony,7
2021-01-11,zielony,4
2021-01-12,pomarańczowy,26
2021-01-13,zielony,45
2021-01-14,niebieski,25&lt;/pre&gt;

&lt;p&gt;
Najpierw należy otworzyć go dowolnym edytorem tekstu i zapisać z kodowaniem utf-8 oraz unixowym zakończeniem linii.
&lt;/p&gt;

&lt;p&gt;
Przygotowanie bazy oraz tabeli w Maria/MySQL:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;gt; create database kolory character set utf8 collate utf8_general_cli;
&amp;gt; use kolory
&amp;gt; create table dni_kolory (data date, kolor varchar(50), ilosc int);&lt;/pre&gt;

&lt;p&gt;
Zaimportowanie danych z pliku csv:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ mysqlimport --ignore-lines=1 --fields-terminated-by=&amp;quot;,&amp;quot; --local kolory dni_kolory.csv&lt;/pre&gt;

&lt;p&gt;
Jeżeli nie ma pliku &lt;em&gt;~/.my.cnf&lt;/em&gt;, lub podobnego, do powyższego należy dodać &lt;em&gt;-u&lt;/em&gt; oraz &lt;em&gt;-p&lt;/em&gt;.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:mypell_nadmiarowe_slowniki&amp;rev=1697378853">
        <dc:format>text/html</dc:format>
        <dc:date>2023-10-15T14:07:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>mypell_nadmiarowe_slowniki</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:mypell_nadmiarowe_slowniki&amp;rev=1697378853</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;usuwanie_nadmiarowych_slownikow&quot;&gt;Usuwanie nadmiarowych słowników&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
W katalogu &lt;em&gt;/usr/share/myspell&lt;/em&gt;, lub &lt;em&gt;/usr/share/hunspell&lt;/em&gt; znajdują się dowiązania do angielskich słowników. Należy pozostawić tylko te pliki:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ ls -1
en_CA.aff
en_CA.dic
en_GB.aff
en_GB.dic
en_US.aff
en_US.dic
pl_PL.aff
pl_PL.dic&lt;/pre&gt;

&lt;p&gt;
Lista języków przy sprawdzaniu pisowni będzie bardziej czytelna. Procedurę trzeba powtórzyć po każdej aktualizacji myspella.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:mysql_haslo_cnf&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>mysql_haslo_cnf</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:mysql_haslo_cnf&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;wyciaganie_hasla_z_mycnf&quot;&gt;Wyciąganie hasła z my.cnf&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Żeby dostać hasło zapisane w zaszyfrowanym pliku my.cnf, należy podać nazwę użytkownika:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;my_print_defaults -s nazwa_uzytownika&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:nagios&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>nagios</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:nagios&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;nagios&quot;&gt;Nagios&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Różne rzeczy.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Nagios&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nagios&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-39&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;nrpe_i_selinux&quot;&gt;Nrpe i SeLinux&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
SeLinux lubi zablokować odczyt dla różnych plików tymczasowych oraz pomocniczych. Nrpe nie może ich wówczas odczytać. Na przykładzie pliku /var/local/check_dnf_updates, używanego przez skromny wrapper, należy zrobić tak:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;semanage fcontext -a -t nrpe_etc_t &amp;#039;/var/local/check_dnf_updates&amp;#039;
restorecon -v /var/local/check_dnf_updates&lt;/pre&gt;

&lt;p&gt;
Logi można znaleźć w journalu i będą wyglądały mniej więcej tak:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SELinux is preventing /usr/bin/cat from read access on the file check_dnf_updates.&lt;/pre&gt;

&lt;p&gt;
Ewentualnie można zezwolić nrpe oraz nagiosowi na buszowanie po systemie:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;semanage permissive -a nrpe_t
semanage permissive -a nagios_unconfined_plugin_t&lt;/pre&gt;

&lt;p&gt;
Po rozwiązaniu problemu można zmienić politykę na domyślną:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;semanage permissive -d nrpe_t
semanage permissive -d nagios_unconfined_plugin_t&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Nrpe i SeLinux&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nrpe_i_selinux&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;40-886&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;czujki_na_bazie_nrpe&quot;&gt;Czujki na bazie nrpe&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Różne pomysły na pliki w /etc/nrpe.d:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;command[check_load]=/usr/lib64/nagios/plugins/check_load -w &amp;quot;$(($(nproc --all)))&amp;quot; -c &amp;quot;$(($(nproc --all)+1))&amp;quot;
command[check_disk]=/usr/lib64/nagios/plugins/check_disk / -w 20% -c 10%
command[check_swap]=/usr/lib64/nagios/plugins/check_swap -w 30% -c 10% -n ok
command[check_cron]=/usr/lib64/nagios/plugins/check_file_age -w 70 -c 140 -W 0 -C 0 -f /var/local/check_cron
command[check_proc]=/usr/lib64/nagios/plugins/check_procs -w 135 -c 145&lt;/pre&gt;

&lt;p&gt;
Cron roota dla check_file_age:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# Plik do monitorowania CRON-a
* * * * * /usr/bin/touch /var/local/check_cron&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Czujki na bazie nrpe&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;czujki_na_bazie_nrpe&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;887-1527&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;anag&quot;&gt;aNag&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Konfiguracja aplikacji aNag.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://play.google.com/store/apps/details?id=info.degois.damien.android.aNag&amp;amp;hl=pl&amp;amp;gl=US&quot; class=&quot;urlextern&quot; title=&quot;https://play.google.com/store/apps/details?id=info.degois.damien.android.aNag&amp;amp;hl=pl&amp;amp;gl=US&quot; rel=&quot;ugc nofollow&quot;&gt;https://play.google.com/store/apps/details?id=info.degois.damien.android.aNag&amp;amp;hl=pl&amp;amp;gl=US&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Manage monitoring instances:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; name: (wedłud uznania)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Instance type: Icinga/Nagios (&lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;: &lt;a href=&quot;https://[domena.com]/nagios/cgi-bin/&quot; class=&quot;urlextern&quot; title=&quot;https://[domena.com]/nagios/cgi-bin/&quot; rel=&quot;ugc nofollow&quot;&gt;https://[domena.com]/nagios/cgi-bin/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Username: [nazwa użytkownika]&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Password: [hasło]&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Client certificate (PKCS12): None&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Allow insecure certifiacte: zaznaczone&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Quick basic auth: zaznaczone&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Enabled: zaznaczone&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Author name: [puste]&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ostgroup: [puste]&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Servicegroup: [puste]&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Po kliknięciu przycisku „Test” powien pojawić się komunikat zawierający „OK Everything looks good”. Po cofnięciu się do ekranu startowego aplikacji będzie widać nazwę wpisaną w pole name w konfiguracji. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;aNag&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;anag&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1528-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:ncselinux&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ncselinux</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:ncselinux&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
SELinux dla Nextclouda w RH/Centos/Fedora
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;semanage fcontext -a -t httpd_sys_rw_content_t &amp;#039;/var/www/nextcloud/data(/.*)?&amp;#039;
semanage fcontext -a -t httpd_sys_rw_content_t &amp;#039;/var/www/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?&amp;#039;
semanage fcontext -a -t httpd_sys_rw_content_t &amp;#039;/var/www/nextcloud/config(/.*)?&amp;#039;
semanage fcontext -a -t httpd_sys_rw_content_t &amp;#039;/var/www/nextcloud/apps(/.*)?&amp;#039;
semanage fcontext -a -t httpd_sys_rw_content_t &amp;#039;/var/www/nextcloud/.htaccess&amp;#039;
semanage fcontext -a -t httpd_sys_rw_content_t &amp;#039;/var/www/nextcloud/.user.ini&amp;#039;
restorecon -Rv &amp;#039;/var/www/nextcloud/&amp;#039;
setsebool -P httpd_can_network_connect on&lt;/pre&gt;

&lt;p&gt;
Bez tej ostatniej linijki Nextcloud działa, ale nie łączy się ze swoim appstore.
&lt;/p&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:ncupdateverify&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ncupdateverify</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:ncupdateverify&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;nextcloud_update_verify_failed&quot;&gt;Nextcloud update verify failed&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Nextcloud podczas aktualizacji zwraca czasem błąd podczas weryfikowania plików, ale nie pokazuje o jakie pliki chodzi. W logach pojawi się:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Thu Dec 17 08:54:39.030667 2020] [access_compat:error] [pid 2539155:tid 2539155] [client ip.ip.ip.ip:58528] AH01797: client denied by server configuration: /var/www/nextcloud/data/.ocdata
[Thu Dec 17 08:55:49.233080 2020] [proxy_fcgi:error] [pid 2551714:tid 2551714] [client ip.ip.ip.ip:58536] AH01071: Got error &amp;#039;PHP message: PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 142333816 bytes) in /var/www/nextcloud/updater/index.php on line 754&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Należy wówczas, na czas aktualizacji, zwiększyć pamięć dla PHP do 512 megabajtów:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;; Maximum amount of memory a script may consume (128MB)
memory_limit = 512M&lt;/pre&gt;

&lt;p&gt;
Po aktualizacji można zmniejszyć limit z powrotem do 128. Nextcloud działa dobrze przy ograniczonej pamięci, nie działa jedynie aktualizator.
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Nextcloud update verify failed&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nextcloud_update_verify_failed&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1007&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;podczas_aktualizacji&quot;&gt;504 podczas aktualizacji&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Inny problem z aktualizacją Nextclouda to tworzenie kopii zapasowej przez aktualizator. Jeżeli danych jest sporo, a serwer niezbyt szybki, Apache zwróci błąd 504. Dzieje się tak, ponieważ aktualizacja jest kontrolowana przez dedykowanego użytkownika i proces php-fpm, więc z punktu widzenia Apache następuje Gateway Timeout. Bez utworzenia kopii zapasowej aktualizacja Nextclouda się nie powiedzie. Wówczas należy:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; usunąć plik /var/www/[katalog_nextcloud]/data/updater-[tag]/.step &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dodać do vhosta w sekcji &amp;lt;Virtualhost&amp;gt; linjkę &lt;em&gt;ProxyTimeout 480&lt;/em&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; przeładować Apache&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; odświeżyć stronę aktualizatora i dokończyć aktualizację.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Po zakończonej aktualizacji można dodać komentarz przed linijką ProxyTimeout, ponieważ podczas zwyczajnej pracy Nextcloud odpowiada znacznie szybciej.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;504 podczas aktualizacji&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;podczas_aktualizacji&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1008-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:newsboat&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>newsboat</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:newsboat&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;newsboat&quot;&gt;Newsboat&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
(konsolowy klient RSS, ATOM i podobnych) Kanały dodaje się w pliku &lt;em&gt;~/.newsboat/urls&lt;/em&gt;, na przykład:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;https://omgubuntu.co.uk/rss
https://jupiterbroadcasting.com/feed
http://ubuntupodcast.org/feed
http://vault.lunduke.com/LundukeShowMP3.xml
https://podcast.asknoahshow.com/rss
http://destinationlinux.org/feed/mp3
https://tuxdigital.com/feed/thisweekinlinux-mp3
https://pythonbytes.fm/episodes/rss
https://talkpython.fm/episodes/rss
https://theretrohour.com/feed/podcast
https://feeds.feedburner.com/niebezpiecznik/
https://sekurak.pl/feed
https://www.phpmyadmin.net/security/feed/
http://fedoraplanet.org/rss20.xml
https://wiki.baszarek.pl/feed
https://blog.centos.org/rss
https://blog.einval.eu/posts/index.xml
https://fedoramagazine.org/rss
https://zaufanatrzeciastrona.pl/rss&lt;/pre&gt;

&lt;p&gt;
Cron do automatycznego odświeżania wszystkich kanałów:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;30 8 * * * /usr/bin/newsboat -x reload &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:nextcloud&amp;rev=1766127824">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-19T07:03:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>nextcloud</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:nextcloud&amp;rev=1766127824</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;nextcloud&quot;&gt;Nextcloud&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Różne notatki na różne tematy.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Nextcloud&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nextcloud&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-61&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;selinux_dla_nextclouda_w_rhel_centos_fedora&quot;&gt;SELinux dla Nextclouda w RHEL/Centos/Fedora&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;semanage fcontext -a -t httpd_sys_rw_content_t &amp;#039;/var/www/nextcloud/data(/.*)?&amp;#039;
semanage fcontext -a -t httpd_sys_rw_content_t &amp;#039;/var/www/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?&amp;#039;
semanage fcontext -a -t httpd_sys_rw_content_t &amp;#039;/var/www/nextcloud/config(/.*)?&amp;#039;
semanage fcontext -a -t httpd_sys_rw_content_t &amp;#039;/var/www/nextcloud/apps(/.*)?&amp;#039;
semanage fcontext -a -t httpd_sys_rw_content_t &amp;#039;/var/www/nextcloud/.htaccess&amp;#039;
semanage fcontext -a -t httpd_sys_rw_content_t &amp;#039;/var/www/nextcloud/.user.ini&amp;#039;
restorecon -Rv &amp;#039;/var/www/nextcloud/&amp;#039;
setsebool -P httpd_can_network_connect on&lt;/pre&gt;

&lt;p&gt;
Bez tej ostatniej linijki Nextcloud działa, ale nie łączy się ze swoim appstore.
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SELinux dla Nextclouda w RHEL\/Centos\/Fedora&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;selinux_dla_nextclouda_w_rhel_centos_fedora&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;62-811&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;nextcloud_update_verify_failed&quot;&gt;Nextcloud update verify failed&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Nextcloud podczas aktualizacji zwraca czasem błąd podczas weryfikowania plików, ale nie pokazuje o jakie pliki chodzi. W logach pojawi się:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Thu Dec 17 08:54:39.030667 2020] [access_compat:error] [pid 2539155:tid 2539155] [client ip.ip.ip.ip:58528] AH01797: client denied by server configuration: /var/www/nextcloud/data/.ocdata
[Thu Dec 17 08:55:49.233080 2020] [proxy_fcgi:error] [pid 2551714:tid 2551714] [client ip.ip.ip.ip:58536] AH01071: Got error &amp;#039;PHP message: PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 142333816 bytes) in /var/www/nextcloud/updater/index.php on line 754&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Należy wówczas, na czas aktualizacji, zwiększyć pamięć dla PHP do 512 megabajtów:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;; Maximum amount of memory a script may consume (128MB)
memory_limit = 512M&lt;/pre&gt;

&lt;p&gt;
Po aktualizacji można zmniejszyć limit z powrotem do 128. Nextcloud działa dobrze przy ograniczonej pamięci, nie działa jedynie aktualizator.
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Nextcloud update verify failed&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nextcloud_update_verify_failed&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;812-1813&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;podczas_aktualizacji&quot;&gt;504 podczas aktualizacji&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Inny problem z aktualizacją Nextclouda to tworzenie kopii zapasowej przez aktualizator. Jeżeli danych jest sporo, a serwer niezbyt szybki, Apache zwróci błąd 504. Dzieje się tak, ponieważ aktualizacja jest kontrolowana przez dedykowanego użytkownika i proces php-fpm, więc z punktu widzenia Apache następuje Gateway Timeout. Bez utworzenia kopii zapasowej aktualizacja Nextclouda się nie powiedzie. Wówczas należy:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; usunąć plik /var/www/[katalog_nextcloud]/data/updater-[tag]/.step &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dodać do vhosta w sekcji &amp;lt;Virtualhost&amp;gt; linjkę &lt;em&gt;ProxyTimeout 480&lt;/em&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; przeładować Apache&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; odświeżyć stronę aktualizatora i dokończyć aktualizację.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Po zakończonej aktualizacji można dodać komentarz przed linijką ProxyTimeout, ponieważ podczas zwyczajnej pracy Nextcloud odpowiada znacznie szybciej.
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;504 podczas aktualizacji&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;podczas_aktualizacji&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1814-2682&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;php_81_i_wyzszy&quot;&gt;PHP 8.1 i wyższy&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Oficjalnie Nextcloud 23.x działa tylko do PHP 8.0, ale można go skłonić do pracy na 8.1. Należy poprawić zmienną (właście stałą) PHP_VERSION_ID w pliku lib/versioncheck.php
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;// Show warning if &amp;gt; PHP 8.0 is used as Nextcloud is not compatible with &amp;gt; PHP 8.0 for now
if (PHP_VERSION_ID &amp;gt;= 90100) {
	http_response_code(500);
	echo &amp;#039;This version of Nextcloud is not compatible with &amp;gt; PHP 8.0.&amp;lt;br/&amp;gt;&amp;#039;;
	echo &amp;#039;You are currently running &amp;#039; . PHP_VERSION . &amp;#039;.&amp;#039;;
	exit(1);
}&lt;/pre&gt;

&lt;p&gt;
Trzeba to poprawić przy każdej aktualizacji Nextclouda, ponieważ plik będzie nadpisywany.
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;PHP 8.1 i wy\u017cszy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;php_81_i_wyzszy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2683-3303&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;owncloud_i_brute-force_protection&quot;&gt;Owncloud i Brute-Force Protection&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Po zainstalowaniu rozszerzenia &lt;em&gt;Brute-Force Protection&lt;/em&gt; nie ma jak zdjąć banów, ponieważ rozszerzenie nie posiada takiej funkcjonalności. Poniżej skrypt Basha, który usuwa bany zapytaniami do bazy. Należy w nim poprawić:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; nazwę bazy ownclouda i przedrostek tabel,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; podsieci VPN oraz lokalnej.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Żeby skrypt mógł działać na bazie danych, uruchamiający go użytkownik (na przykład root) powinien mieć plik &lt;em&gt;.my.cnf&lt;/em&gt; pozwalający na logowanie się bez podawania hasła.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/bash
# unban IP addresses from Owncloud application firewall

if [ &amp;quot;$1&amp;quot; = &amp;quot;--ip&amp;quot; ] ; then
  # unban single IP address
  if [ -z $2 ] ; then
    echo &amp;quot;Add ip address, or use --help&amp;quot;
  else
    mysql -e &amp;quot;delete from owncloud.oc_bfp_failed_logins where ip = &amp;#039;${2}&amp;#039;;&amp;quot;
  fi

elif [ &amp;quot;$1&amp;quot; = &amp;quot;--vpn&amp;quot; ] ; then
  # unban all VPN users
  mysql -e &amp;quot;delete from owncloud.oc_bfp_failed_logins where ip like &amp;#039;172.30.50.%&amp;#039;;&amp;quot;
  mysql -e &amp;quot;delete from owncloud.oc_bfp_failed_logins where ip like &amp;#039;172.30.51.%&amp;#039;;&amp;quot;
  mysql -e &amp;quot;delete from owncloud.oc_bfp_failed_logins where ip = &amp;#039;192.168.60.254&amp;#039;;&amp;quot;

elif [ &amp;quot;$1&amp;quot; = &amp;quot;--all&amp;quot; ] ; then
  # unban all IP addresses
  mysql -e &amp;quot;delete from owncloud.oc_bfp_failed_logins;&amp;quot;

elif [ &amp;quot;$1&amp;quot; = &amp;quot;--user&amp;quot; ] ; then
  # unban single user
  if [ -z $2 ] ; then
    echo &amp;quot;Add username, or use --help&amp;quot;
  else
    mysql -e &amp;quot;delete from owncloud.oc_bfp_failed_logins where uid = &amp;#039;${2}&amp;#039;;&amp;quot;
  fi

elif [ &amp;quot;$1&amp;quot; = &amp;quot;--list&amp;quot; ] ; then
  # list users and IP addresses
  mysql -e &amp;quot;select uid as user, \
                   ip as ip_address, \
                   FROM_UNIXTIME(attempted_at) as login_attempt \
            from owncloud.oc_bfp_failed_logins \
            order by 3;&amp;quot;

# help
elif [ &amp;quot;$1&amp;quot; = &amp;quot;--help&amp;quot; ] || [ -z $1 ] ; then
  # echo some instructions
  echo -e &amp;quot;Unban users from Owncloud login page.\r
Please specify:\r
   owncloud_unban --list to view all banned IP&amp;#039;s,\r
   owncloud_unban --all to unban all IP&amp;#039;s,\r
   owncloud_unban --ip [ip.ip.ip.ip] to unban single IP address,\r
   owncloud_unban --vpn to unban all IP&amp;#039;s from VPN and internal networks,\r
   owncloud_unban --user [username] to unban user.&amp;quot;

else
  echo &amp;quot;That did nothing. Try owncloud_unban --help&amp;quot;
fi&lt;/pre&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Owncloud i Brute-Force Protection&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;owncloud_i_brute-force_protection&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3304-5555&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;nextcloud_za_proxy&quot;&gt;Nextcloud za proxy&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Po migracji Nextclouda za proxy wszystko działa, ale niektóre klienty się gubią. Klient na Androida pokazuje status „serwer w trybie konserwacji”. Nie działa również funkcjonalność &lt;em&gt;instant upload&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
Pomaga wówczas dodanie nowej linijki do pliki config.php
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;#039;overwriteprotocol&amp;#039; =&amp;gt; &amp;#039;https&amp;#039;,&lt;/pre&gt;

&lt;p&gt;
źródło:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/nextcloud/android/issues/5945#issuecomment-619783927&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/nextcloud/android/issues/5945#issuecomment-619783927&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/nextcloud/android/issues/5945#issuecomment-619783927&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://docs.nextcloud.com/server/18/admin_manual/configuration_server/reverse_proxy_configuration.html#overwrite-parameters&quot; class=&quot;urlextern&quot; title=&quot;https://docs.nextcloud.com/server/18/admin_manual/configuration_server/reverse_proxy_configuration.html#overwrite-parameters&quot; rel=&quot;ugc nofollow&quot;&gt;https://docs.nextcloud.com/server/18/admin_manual/configuration_server/reverse_proxy_configuration.html#overwrite-parameters&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Nextcloud za proxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nextcloud_za_proxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;5556-6113&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;podstawione_rootca&quot;&gt;Podstawione RootCA&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Nextcloud jest za http proxy, które podstawia certyfikat i blokuje wyjście aplikacji do internetu, na przykład e2guardian. Nextcloud nie ufa certyfikatom z pliku &lt;em&gt;/etc/ssl/certs/ca-bundle.crt&lt;/em&gt;, więc trzeba dodać certyfikat e2guardiana do aplikacji Nextcloud:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo -u uzytkownikaplikacyjny /usr/bin/php /sciezka/do/pliku/public_html/occ security:certificates:import /tmp/e2.crt&lt;/pre&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Podstawione RootCA&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;podstawione_rootca&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;6114-6538&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;bledy_500_podczas_generowania_miniaturek&quot;&gt;Błędy 500 podczas generowania miniaturek&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Nextcloud nawiązuje połączenie do bazy danych podczas generowania każdej jednej miniaturki na kliencie, na przykład w programie Gnome Files. Jeżeli baza danych jest na innym hoście, &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt; zaprzestanie odpowiedzi do serwera aplikacyjnego i Nextcloud pokaże błędy 500.
&lt;/p&gt;

&lt;p&gt;
Log Apache:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;nextcloud.host.local ip.ip.ip.ip - - [19/Dec/2025:07:13:24 +0100] &amp;quot;PROPFIND /remote.php/webdav HTTP/1.0&amp;quot; 500 289 &amp;quot;-&amp;quot; &amp;quot;gvfs/1.54.4&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Log Unbound:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Dec 19 07:15:03 dnsmasq[32214]: Rate-limiting database.host.local is REFUSED (EDE: blocked)
Dec 19 07:15:03 dnsmasq[32214]: query[A] database.host.local from ip.ip.ip.ip&lt;/pre&gt;

&lt;p&gt;
Log Nextcloud:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{&amp;quot;reqId&amp;quot;:&amp;quot;aUTtBH1cp7_6-vFy1fyFYgAAAAM&amp;quot;,&amp;quot;level&amp;quot;:3,&amp;quot;time&amp;quot;:&amp;quot;2025-12-19T06:13:24+00:00&amp;quot;,&amp;quot;remoteAddr&amp;quot;:&amp;quot;ip.ip.ip.ip&amp;quot;,&amp;quot;user&amp;quot;:&amp;quot;--&amp;quot;,&amp;quot;app&amp;quot;:&amp;quot;core&amp;quot;,&amp;quot;method&amp;quot;:&amp;quot;PROPFIND&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;/remote.php/webdav&amp;quot;,&amp;quot;message&amp;quot;:&amp;quot;Exception thrown: Doctrine\\DBAL\\Exception&amp;quot;,&amp;quot;userAgent&amp;quot;:&amp;quot;gvfs/1.54.4&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;29.0.16.1&amp;quot;,&amp;quot;exception&amp;quot;:{&amp;quot;Exception&amp;quot;:&amp;quot;Doctrine\\DBAL\\Exception&amp;quot;,&amp;quot;Message&amp;quot;:&amp;quot;Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for database.host.local failed: Name or service not known&amp;quot;,&amp;quot;Code&amp;quot;:2002,&amp;quot;Trace&amp;quot;:[{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/3rdparty/doctrine/dbal/src/Connection.php&amp;quot;,&amp;quot;line&amp;quot;:453,&amp;quot;function&amp;quot;:&amp;quot;connect&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;OC\\DB\\Connection&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;-&amp;gt;&amp;quot;},{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/3rdparty/doctrine/dbal/src/Connection.php&amp;quot;,&amp;quot;line&amp;quot;:411,&amp;quot;function&amp;quot;:&amp;quot;getDatabasePlatformVersion&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;Doctrine\\DBAL\\Connection&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;-&amp;gt;&amp;quot;},{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/3rdparty/doctrine/dbal/src/Connection.php&amp;quot;,&amp;quot;line&amp;quot;:318,&amp;quot;function&amp;quot;:&amp;quot;detectDatabasePlatform&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;Doctrine\\DBAL\\Connection&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;-&amp;gt;&amp;quot;},{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/lib/private/DB/ConnectionAdapter.php&amp;quot;,&amp;quot;line&amp;quot;:200,&amp;quot;function&amp;quot;:&amp;quot;getDatabasePlatform&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;Doctrine\\DBAL\\Connection&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;-&amp;gt;&amp;quot;},{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/lib/private/DB/QueryBuilder/QueryBuilder.php&amp;quot;,&amp;quot;line&amp;quot;:121,&amp;quot;function&amp;quot;:&amp;quot;getDatabasePlatform&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;OC\\DB\\ConnectionAdapter&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;-&amp;gt;&amp;quot;},{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/lib/private/AppConfig.php&amp;quot;,&amp;quot;line&amp;quot;:1239,&amp;quot;function&amp;quot;:&amp;quot;expr&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;OC\\DB\\QueryBuilder\\QueryBuilder&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;-&amp;gt;&amp;quot;},{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/lib/private/AppConfig.php&amp;quot;,&amp;quot;line&amp;quot;:264,&amp;quot;function&amp;quot;:&amp;quot;loadConfig&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;OC\\AppConfig&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;-&amp;gt;&amp;quot;},{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/lib/private/legacy/OC_App.php&amp;quot;,&amp;quot;line&amp;quot;:736,&amp;quot;function&amp;quot;:&amp;quot;searchValues&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;OC\\AppConfig&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;-&amp;gt;&amp;quot;},{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/lib/private/TemplateLayout.php&amp;quot;,&amp;quot;line&amp;quot;:232,&amp;quot;function&amp;quot;:&amp;quot;getAppVersions&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;OC_App&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;::&amp;quot;},{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/lib/private/legacy/OC_Template.php&amp;quot;,&amp;quot;line&amp;quot;:145,&amp;quot;function&amp;quot;:&amp;quot;__construct&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;OC\\TemplateLayout&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;-&amp;gt;&amp;quot;},{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/lib/private/Template/Base.php&amp;quot;,&amp;quot;line&amp;quot;:132,&amp;quot;function&amp;quot;:&amp;quot;fetchPage&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;OC_Template&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;-&amp;gt;&amp;quot;},{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/lib/private/legacy/OC_Template.php&amp;quot;,&amp;quot;line&amp;quot;:320,&amp;quot;function&amp;quot;:&amp;quot;printPage&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;OC\\Template\\Base&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;-&amp;gt;&amp;quot;},{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/remote.php&amp;quot;,&amp;quot;line&amp;quot;:88,&amp;quot;function&amp;quot;:&amp;quot;printExceptionErrorPage&amp;quot;,&amp;quot;class&amp;quot;:&amp;quot;OC_Template&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;::&amp;quot;},{&amp;quot;file&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/remote.php&amp;quot;,&amp;quot;line&amp;quot;:174,&amp;quot;function&amp;quot;:&amp;quot;handleException&amp;quot;}],&amp;quot;File&amp;quot;:&amp;quot;/path/to/nextcloud/public_html/lib/private/DB/Connection.php&amp;quot;,&amp;quot;Line&amp;quot;:168,&amp;quot;CustomMessage&amp;quot;:&amp;quot;Exception thrown: Doctrine\\DBAL\\Exception&amp;quot;}}&lt;/pre&gt;

&lt;p&gt;
Można dodać wówczas nową linijkę do pliku &lt;em&gt;/etc/hosts&lt;/em&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ip.ip.ip.ip database.host.local database&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;B\u0142\u0119dy 500 podczas generowania miniaturek&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bledy_500_podczas_generowania_miniaturek&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;6539-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:nmcli_shell&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>nmcli_shell</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:nmcli_shell&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;powloka_nmcli&quot;&gt;Powłoka nmcli&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Scenariusz: zainstalowano system OpenSUSE Leap 15 i wybrano w ustawieniach sieci używanie NetworkManagera. Instalator niepoprawnie skonfigurował sieć, ponieważ system korzysta z DHCP, a miał mieć stałe IP. Należy ustawić:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ip 192.168.100.70&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; maskę 255.255.255.0&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; bramę 192.168.100.1&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dns 192.168.100.10&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dns-search ping.local&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Po zalogowaniu jako root:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# nmcli connection edit Wired\ connection\ 1
===| nmcli interactive connection editor |===

Editing existing &amp;#039;802-3-ethernet&amp;#039; connection: &amp;#039;Wired connection 1&amp;#039;

Type &amp;#039;help&amp;#039; or &amp;#039;?&amp;#039; for available commands.
Type &amp;#039;print&amp;#039; to show all the connection properties.
Type &amp;#039;describe [&amp;lt;setting&amp;gt;.&amp;lt;prop&amp;gt;]&amp;#039; for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli&amp;gt; set ipv4.method manual
nmcli&amp;gt; set ipv4.addresses 192.168.100.70/24
nmcli&amp;gt; set ipv4.dns 192.168.100.10
nmcli&amp;gt; set ipv4.dns-search ping.local
nmcli&amp;gt; save
nmcli&amp;gt; quit

# poza powloka nmcli, poniewaz nie potrafie tego inaczej poprawnie zrobic
# nmcli connection modify Wired\ connection\ 1 ipv4.gateway 192.168.100.1
&lt;/pre&gt;

&lt;p&gt;
Można podejrzeć (oraz edytować) połączenie, używając pliku tekstowego:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cat /etc/NetworkManager/system-connections/.nmconnection&lt;/pre&gt;

&lt;p&gt;
Po edycji połaczenia należy na chwilę położyć interfejs:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# nmcli connection down Wired\ connection\ 1 ; nmcli connection up Wired\ connection\ 1&lt;/pre&gt;

&lt;p&gt;
Można również zrestartować NetworkManagera:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# systemctl restart NetowrkManager&lt;/pre&gt;
&lt;hr /&gt;

&lt;p&gt;
Powyższy opis dotyczy również innych dystrybucji używających NetworkManagera, ale pliki konfiguracyjne wyglądają inaczej i są w innych katalogach. Przykładowo w RHEL/CentOS/Fedora jest to &lt;em&gt;/etc/sysconfig/network-scripts&lt;/em&gt;/. Od Fedory 33 jest używany również &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:systemd_resolved&quot; class=&quot;wikilink1&quot; title=&quot;wiki:systemd_resolved&quot; data-wiki-id=&quot;wiki:systemd_resolved&quot;&gt;resolver systemd&lt;/a&gt;, więc ustawienia &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt; są w pliku &lt;em&gt;/etc/systemd/redolved/.conf&lt;/em&gt;.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:openvpn&amp;rev=1680342890">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-01T09:54:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>openvpn</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:openvpn&amp;rev=1680342890</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;openvpn&quot;&gt;OpenVPN&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Strona na różne notatki.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;OpenVPN&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;openvpn&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-51&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;klient_openvpn_pod_systemd&quot;&gt;Klient OpenVPN pod systemd&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Najpierw należy wygenerować klucz oraz certyfikat na serwerze OpenVPN.
&lt;/p&gt;

&lt;p&gt;
Na systemie-kliencie należy utworzyć plik &lt;em&gt;/etc/openvpn/client/vpn_siec_pl.conf&lt;/em&gt; o treści:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;client
dev tun
proto udp
remote vpn.siec.pl 1194
nobind
persist-key
persist-tun
mute-replay-warnings
remote-cert-tls server
verb 3
explicit-exit-notify

route-delay 2

&amp;lt;ca&amp;gt;
-----BEGIN CERTIFICATE-----
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-----END CERTIFICATE-----
&amp;lt;/ca&amp;gt;

&amp;lt;cert&amp;gt;
-----BEGIN CERTIFICATE-----
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-----END CERTIFICATE-----
&amp;lt;/cert&amp;gt;

&amp;lt;key&amp;gt;
-----BEGIN PRIVATE KEY-----
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-----END PRIVATE KEY-----
&amp;lt;/key&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Systemd czyta pliki w tym katalogu i potrafi przetłumaczyć je sobie na „unit”:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl enable openvpn-client@siec_vpn_pl
systemctl start openvpn-client@siec_vpn_pl
systemctl status openvpn-client@siec_vpn_pl&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Klient OpenVPN pod systemd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;klient_openvpn_pod_systemd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;52-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:outlook_msg&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>outlook_msg</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:outlook_msg&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;otwieranie_maili_z_outlooka&quot;&gt;Otwieranie maili z Outlooka&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Program MSGViewer potrafi otwierać maile przekazywane jako załączniki. Pod nie-KDE należy w opcjach zmienić kde-open na xdg-open.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:msgviewer-1.8.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;wiki:msgviewer-1.8.zip (3.9 MB)&quot;&gt;msgviewer-1.8.zip&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:owncloud_bfp&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>owncloud_bfp</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:owncloud_bfp&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;owncloud_i_brute-force_protection&quot;&gt;Owncloud i Brute-Force Protection&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Po zainstalowaniu rozszerzenia &lt;em&gt;Brute-Force Protection&lt;/em&gt; nie ma jak zdjąć banów, ponieważ rozszerzenie nie posiada takiej funkcjonalności. Poniżej skrypt Basha, który usuwa bany zapytaniami do bazy. Należy w nim poprawić:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; nazwę bazy ownclouda i przedrostek tabel,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; podsieci VPN oraz lokalnej.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Żeby skrypt mógł działać na bazie danych, uruchamiający go użytkownik (na przykład root) powinien mieć plik &lt;em&gt;.my.cnf&lt;/em&gt; pozwalający na logowanie się bez podawania hasła.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
#!/usr/bin/bash
# unban IP addresses from Owncloud application firewall

if [ &amp;quot;$1&amp;quot; = &amp;quot;--ip&amp;quot; ] ; then
  # unban single IP address
  if [ -z $2 ] ; then
    echo &amp;quot;Add ip address, or use --help&amp;quot;
  else
    mysql -e &amp;quot;delete from owncloud.oc_bfp_failed_logins where ip = &amp;#039;${2}&amp;#039;;&amp;quot;
  fi

elif [ &amp;quot;$1&amp;quot; = &amp;quot;--vpn&amp;quot; ] ; then
  # unban all VPN users
  mysql -e &amp;quot;delete from owncloud.oc_bfp_failed_logins where ip like &amp;#039;172.30.50.%&amp;#039;;&amp;quot;
  mysql -e &amp;quot;delete from owncloud.oc_bfp_failed_logins where ip like &amp;#039;172.30.51.%&amp;#039;;&amp;quot;
  mysql -e &amp;quot;delete from owncloud.oc_bfp_failed_logins where ip = &amp;#039;192.168.60.254&amp;#039;;&amp;quot;

elif [ &amp;quot;$1&amp;quot; = &amp;quot;--all&amp;quot; ] ; then
  # unban all IP addresses
  mysql -e &amp;quot;delete from owncloud.oc_bfp_failed_logins;&amp;quot;

elif [ &amp;quot;$1&amp;quot; = &amp;quot;--user&amp;quot; ] ; then
  # unban single user
  if [ -z $2 ] ; then
    echo &amp;quot;Add username, or use --help&amp;quot;
  else
    mysql -e &amp;quot;delete from owncloud.oc_bfp_failed_logins where uid = &amp;#039;${2}&amp;#039;;&amp;quot;
  fi

elif [ &amp;quot;$1&amp;quot; = &amp;quot;--list&amp;quot; ] ; then
  # list users and IP addresses
  mysql -e &amp;quot;select uid as user, \
                   ip as ip_address, \
                   FROM_UNIXTIME(attempted_at) as login_attempt \
            from owncloud.oc_bfp_failed_logins \
            order by 3;&amp;quot;

# help
elif [ &amp;quot;$1&amp;quot; = &amp;quot;--help&amp;quot; ] || [ -z $1 ] ; then
  # echo some instructions
  echo -e &amp;quot;Unban users from Owncloud login page.\r
Please specify:\r
   owncloud_unban --list to view all banned IP&amp;#039;s,\r
   owncloud_unban --all to unban all IP&amp;#039;s,\r
   owncloud_unban --ip [ip.ip.ip.ip] to unban single IP address,\r
   owncloud_unban --vpn to unban all IP&amp;#039;s from VPN and internal networks,\r
   owncloud_unban --user [username] to unban user.&amp;quot;

else
  echo &amp;quot;That did nothing. Try owncloud_unban --help&amp;quot;
fi&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:pleskd10php56&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>pleskd10php56</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:pleskd10php56&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;plesk_debian10_i_php56&quot;&gt;Plesk, Debian10 i PHP5.6&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Dla migrujących ze starego systemu z Pleskiem na nowy i potrzebujących PHP 5.6 do kilku starych stronek.
&lt;/p&gt;

&lt;p&gt;
Najpierw należy dodać repozytorium Onderja.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
# echo &amp;#039;deb https://packages.sury.org/php/ buster main&amp;#039; &amp;gt; /etc/apt/sources.list.d/sury56.php&lt;/pre&gt;

&lt;p&gt;
Pod żadnym pozorem nie należy teraz aktualizować systemu, tylko zainstalować PHP5.6:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# apt update
# apt -V install php5.6 php5.6-cli php5.6-cgi php5.6-fpm php5.6-gd php5.6-mysql php5.6-imap php5.6-curl php5.6-intl php5.6-pspell php5.6-recode php5.6-sqlite3 php5.6-tidy php5.6-xmlrpc php5.6-xsl php5.6-zip php5.6-mbstring php5.6-soap php5.6-opcache libicu65 php5.6-common php5.6-json php5.6-readline php5.6-xml&lt;/pre&gt;

&lt;p&gt;
Zakomentować plik /etc/apt/sources.list.d/sury56.php i przeczyścić cache apta:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# apt clean all
# apt update&lt;/pre&gt;

&lt;p&gt;
Poinformować Pleska o zainstalowanym PHP:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# /usr/local/psa/bin/php_handler --add -displayname 5.6.40 -path /usr/bin/php-cgi5.6 -phpini /etc/php/5.6/php.ini -type fastcgi -id 5.6.40 -clipath /usr/bin/php5.6
The new PHP handler with the id &amp;quot;5.6.40&amp;quot; was successfully registered.&lt;/pre&gt;

&lt;p&gt;
Teraz można już aktualizować system, jak zwykle.
&lt;/p&gt;

&lt;p&gt;
Źródło: &lt;a href=&quot;https://support.plesk.com/hc/en-us/articles/115000497853?page=2#comment_360001829619&quot; class=&quot;urlextern&quot; title=&quot;https://support.plesk.com/hc/en-us/articles/115000497853?page=2#comment_360001829619&quot; rel=&quot;ugc nofollow&quot;&gt;https://support.plesk.com/hc/en-us/articles/115000497853?page=2#comment_360001829619&lt;/a&gt; .
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:podman&amp;rev=1766831590">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-27T10:33:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>podman</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:podman&amp;rev=1766831590</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;podman&quot;&gt;Podman&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Kilka przykładów tworzenia kontenerów. &lt;strong&gt;Pamiętać, że nie trzeba być rootem, ani sudo do niczego.&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cat /etc/hosts
[...]
127.0.0.1 strona.ping.local php.ping.local
[...]&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Podman&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;podman&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-212&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;apache&quot;&gt;Apache&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Katalog z kontenerem.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cd apache
$ tree 
.
├── conf
│   ├── 00-security.conf
│   ├── 01-logformat.conf
│   ├── 02-servername.conf
│   └── 99-strona.ping.local.conf
├── Dockerfile
├── log
└── public_html
    └── index.html&lt;/pre&gt;

&lt;p&gt;
Zawartość plików konfiguracyjnych w katalogu conf:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cat conf/00-security.conf 
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options &amp;quot;SAMEORIGIN&amp;quot;
Header set X-XSS-Protection &amp;quot;1; mode=block&amp;quot;
Servertokens Prod
ServerSignature Off&lt;/pre&gt;

&lt;p&gt;
Zakładam, że strona będzie za jakimś rodzajem proxy, a chcę widzieć w logach adresy IP odwiedzających.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cat conf/01-logformat.conf 
LogFormat &amp;quot;%v %{X-Real-IP}i %l %u %t \&amp;quot;%r\&amp;quot; %&amp;gt;s %b \&amp;quot;%{Referer}i\&amp;quot; \&amp;quot;%{User-Agent}i\&amp;quot;&amp;quot; nginxproxy&lt;/pre&gt;

&lt;p&gt;
Apache pokazuje w logach brak ustawionego ServerName, więc jakiś tam zawsze ustawiam.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cat conf/02-servername.conf 
ServerName strona.ping.local&lt;/pre&gt;

&lt;p&gt;
Prosty vhost:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cat conf/99-strona.ping.local.conf 
&amp;lt;VirtualHost *:8080&amp;gt;
  ServerName strona.ping.local:8080
  ServerAlias *.strona.ping.local
  DocumentRoot /var/www/html
  CustomLog logs/strona-access.log nginxproxy
  ErrorLog logs/strona-errors.log
  &amp;lt;Directory /var/www/html&amp;gt;
    AllowOverride All
    Require all granted
  &amp;lt;/Directory&amp;gt;
&amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Plik do budowania obrazu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cat Dockerfile 
from registry.redhat.io/ubi9/httpd-24:1-331.1722518952
ADD conf/* /etc/httpd/conf.d/
USER 48
CMD run-httpd&lt;/pre&gt;

&lt;p&gt;
Logowanie do Red Hata:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman login registry.redhat.io                                
Username: [login do redhat.com]
Password: [hasło do redhat.com]&lt;/pre&gt;

&lt;p&gt;
Budowanie obrazu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman build -t strona-apache .
STEP 1/4: FROM registry.redhat.io/ubi9/httpd-24:1-331.1722518952                                                                        
Trying to pull registry.redhat.io/ubi9/httpd-24:1-331.1722518952...                                                                     
Getting image source signatures                                                                                                         
Checking if image destination supports signatures                                                                                       
Copying blob aa3367aaf4aa done   |                                                                                                      
Copying blob cc296d75b612 done   |                                                                                                      
Copying blob db22e630b1c7 done   |                                                                                                      
Copying config e19a3fc93d done   |                                                                                                      
Writing manifest to image destination                                                                                                   
Storing signatures                                                                                                                      
STEP 2/4: ADD conf/* /etc/httpd/conf.d/                                                                                                 
--&amp;gt; [identyfikator]
STEP 3/4: USER 48
--&amp;gt; [identyfikator]
STEP 4/4: CMD run-httpd
COMMIT strona-apache
--&amp;gt; 28baafdb39f5
Successfully tagged localhost/strona-apache:latest
[dlugi_śmieszny_numer]&lt;/pre&gt;

&lt;p&gt;
Uprawnia do katalogów log oraz public_html:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman unshare chown -R 48:48 log/
$ podman unshare chown -R 48:48 public_html/&lt;/pre&gt;

&lt;p&gt;
Uruchomienie kontenera. W tym wypadku Apache nie będzie mógł modyfikować zawartości katalogu /var/www/html. Ta kropkaukośnik jest ważna. Bez niej nie zadziała montowanie woluminów.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman run -d -p 8801:8080 -v ./log:/var/log/httpd:Z,rw -v ./public_html:/var/www/html:Z,ro strona-apache
$ podman ps -a
CONTAINER ID     IMAGE                           COMMAND               CREATED         STATUS         PORTS                                       NAMES
[identyfikator]  localhost/strona-apache:latest  /bin/sh -c run-ht...  32 minutes ago  Up 32 minutes  0.0.0.0:8801-&amp;gt;8080/tcp, 8080/tcp, 8443/tcp  [śmieszna_nazwa]&lt;/pre&gt;

&lt;p&gt;
I już działa.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ curl -Isk strona.ping.local:8801
HTTP/1.1 200 OK
[...]&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Apache&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;apache&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;213-4582&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;mariadb&quot;&gt;MariaDB&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;$ cd mariadb
tree .
.
├── conf
│   └── 99-baza.cnf
├── database
├── Dockerfile
└── log&lt;/pre&gt;

&lt;p&gt;
Konfiguracja w pliku cnf:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cat conf/99-baza.cnf 
[mariadb]
log_output=FILE
general_log
general_log_file=/var/log/mariadb/general.log
slow_query_log
slow_query_log_file=/var/log/mariadb/slow.log&lt;/pre&gt;

&lt;p&gt;
Dockerfile:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cat Dockerfile
from registry.redhat.io/rhel9/mariadb-105:1-194
ADD conf/* /etc/my.cnf.d/
USER 27
CMD [&amp;quot;run-mysqld&amp;quot;]&lt;/pre&gt;

&lt;p&gt;
Budowanie obrazu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman build -t baza .&lt;/pre&gt;

&lt;p&gt;
Uprawnienia katalogów:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman unshare chown -R 27:27 log/
$ podman unshare chown -R 27:27 database/&lt;/pre&gt;

&lt;p&gt;
Skomplikowane uruchomienie kontenera:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman run -d -e MYSQL_ROOT_PASSWORD=TajneHaslo -e MYSQL_USER=uzytkownik -e MYSQL_PASSWORD=InneHaslo -e MYSQL_DATABASE=nazwabazy -v ./database:/var/lib/mysql:Z,rw -v ./log:/var/log/mariadb:Z,rw -p 5301:3306 baza  &lt;/pre&gt;

&lt;p&gt;
Wyjaśnienie parametrów:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MYSQL_ROOT_PASSWORD - hasło roota, niepraktyczne i niepotrzebne, ale warto jakieś podać,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MYSQL_USER - nazwa użytkownika aplikacyjnego,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MYSQL_PASSWORD - hasło użytkownika aplikacyjnego,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MYSQL_DATABASE - nazwa bazy danych, której używa powyższy użytkownik.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Jeżeli na woluminie zamontowanym w katalogu datadir jest już jakaś baza danych, powyższe zmienne nie działają. Można później zmienić hasła użytkowników narzędziami bazodanowymi.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;MariaDB&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mariadb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;4583-6010&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;php&quot;&gt;PHP&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;$ cd php
tree -a .
.
├── conf
│   ├── apache
│   │   ├── 00-security.conf
│   │   ├── 01-logformat.conf
│   │   ├── 02-servername.conf
│   │   └── 99-php.ping.local.conf
│   └── php
│       └── 99-var.ini
├── Dockerfile
├── log
│   ├── php-access.log
│   └── php-errors.log
├── public_html
│   └── info.php
└── sessions&lt;/pre&gt;

&lt;p&gt;
Pliki konfiguracyjne Apache są podobne do tych z poprzedniego przykładu. Różni się tylko nazwa vhosta oraz nazwy plików w logami.
&lt;/p&gt;

&lt;p&gt;
Dockerfile:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cat Dockerfile 
from registry.redhat.io/ubi9/php-82:1-21.1724040036
ADD conf/apache/* /etc/httpd/conf.d/
ADD conf/php/* /etc/php.d/

USER 1001

CMD /usr/libexec/s2i/run&lt;/pre&gt;

&lt;p&gt;
Konfiguracja PHP:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cat 99-var.ini  
[PHP]
expose_php = Off
memory_limit = 128M
post_max_size = 64M
upload_max_filesize = 64M

[Date]
date.timezone = Europe/Warsaw&lt;/pre&gt;

&lt;p&gt;
Uprawnienia:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman unshare chown -R 1001:1001 log/ public_html/ sessions/&lt;/pre&gt;

&lt;p&gt;
Uruchomienie kontenera:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman run -d -v ./public_html/:/var/www/html:Z -v ./sessions:/tmp/sessions:Z -v ./log:/var/log/httpd:Z -p 8888:8080 baszarek-php82:latest&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;PHP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;php&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;6011-7302&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;uruchomienie_kontenerow_z_systemd&quot;&gt;Uruchomienie kontenerów z systemd&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;$ mkdir -p ~/.config/systemd/user
$ cd ~/.config/systemd/user
$ podman generate systemd --name smieszna-nazwa --files --new
$ systemctl --user enable container-smieszna-nazwa
$ podman stop smieszna-nazwa
$ systemctl --user start container-smieszna-nazwa
$ systemctl --user enable container-smieszna-nazwa&lt;/pre&gt;

&lt;p&gt;
Plik w katalogu &lt;em&gt;.config/systemd/user&lt;/em&gt; nie będzie zawierał linijki &lt;em&gt;WorkingDirectory=&lt;/em&gt; w sekcji Service. Warto ją dopisać, żeby nie musieć określać woluminów całą, bezwzględną ścieżką.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Uruchomienie kontener\u00f3w z systemd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;uruchomienie_kontenerow_z_systemd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;7303-7874&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;konteneryzowanie_malej_aplikacji&quot;&gt;Konteneryzowanie małej aplikacji&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Aplikacja została zmodyfikowana pod kontener. Usunąłem z niej pliki konfiguracyjne i zastąpiłem je zmiennymi środowiskowymi. Można używać obydwu, gdzie pliki przeważają zmienne. Obrazy MariaDB Red Hata takie właśnie są. Można ustawić różne zmienne regulujące dostęp do bazy danych, ale jeżeli ta już istnieje na woluminie, są one ignorowane. 
&lt;/p&gt;

&lt;p&gt;
Dockerfile:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;from registry.access.redhat.com/ubi9/openjdk-17-runtime:1.20-2.1724037300

RUN mkdir -p /opt/astech
ADD ./astech /opt/astech

WORKDIR /opt/astech
ENV AST_MM_VERSION=&amp;quot;0.49.19.1&amp;quot;

CMD [&amp;quot;/usr/bin/python3&amp;quot;, &amp;quot;astech.py&amp;quot;]&lt;/pre&gt;

&lt;p&gt;
Pliki w katalogu z plikiem Dockerfile, to trzech poziomów:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# tree -aL 3
.         
├── astech                  
│   ├── astech.py
│   ├── bottle.py
│   ├── error404.tpl  
│   ├── footer.tpl 
│   ├── gamefiles.tpl
│   ├── header.tpl
│   ├── index.tpl
│   ├── login.tpl
│   ├── megamek-0.49.19.1
│   │   ├── data                                                    
│   │   ├── docs                                                                                                                        
│   │   ├── lib
│   │   ├── logs
│   │   ├── MegaMek.jar
│   │   ├── mm
│   │   ├── mm.bat
│   │   ├── mmconf
│   │   ├── savegames
│   │   └── userdata
│   ├── options.tpl
│   └── static
│       ├── astech_logo.png
│       ├── delete.png
│       ├── download.png
│       ├── selected.png
│       ├── select.png
│       ├── server_off.png
│       ├── server_on.png
│       └── style.css
├── boards
├── Dockerfile
├── logs
│   ├── megameklab.log
│   ├── megamek.log
│   └── mekhq.log
├── mechfiles
└── savegames&lt;/pre&gt;

&lt;p&gt;
Budowanie obrazu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;podman build -t astech049191 .&lt;/pre&gt;

&lt;p&gt;
Uprawnienia do woluminów. Domyślnie aplikacja w podmanie uruchamia się z uprawnieniami użytkownika o UID 1001, ale można to zmienić w Dockerfile, lub parametrem &lt;em&gt;-u&lt;/em&gt; przy &lt;em&gt;podman run&lt;/em&gt;. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman unshare chown -R 1001 boards/ logs/ mechfiles/ savegames/
$ podman unshare chmod 750 boards/ logs/ mechfiles/ savegames/
$ ll
razem 8
drwxr-xr-x. 4 lukasz lukasz 4096 09-05 07:03 astech
drwxr-x---. 2 524472 lukasz   34 09-05 07:30 boards
-rw-r--r--. 1 lukasz lukasz  217 09-05 06:53 Dockerfile
drwxr-x---. 2 524472 lukasz   64 09-05 07:28 logs
drwxr-x---. 2 524472 lukasz    6 09-05 06:47 mechfiles
drwxr-x---. 2 524472 lukasz    6 09-05 06:47 savegames&lt;/pre&gt;

&lt;p&gt;
Uruchomienie kontenera:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman run --name myastech -d -p 8080:8080 -p 2346:2346 -e AST_MM_PORT=2346 -e AST_USER=someuser -e AST_PASS=somepassword -v ./savegames:/opt/astech/megamek-0.49.19.1/savegames:rw,Z,U -v ./logs:/opt/astech/megamek-0.49.19.1/logs:rw,Z,U -v ./boards:/opt/astech/megamek-0.49.19.1/data/boards/astech:rw,Z,U -v ./mechfiles:/opt/astech/megamek-0.49.19.1/data/mechfiles/astech:rw,Z,U astech049191&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Konteneryzowanie ma\u0142ej aplikacji&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;konteneryzowanie_malej_aplikacji&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;7875-11118&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;su_-_uzytkownik_i_xdg&quot;&gt;su - [uzytkownik] i xdg&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
„systemctl –user” nie będzie działał dobrze, dopóki użytkownik go wywołujący nie będzie zalogowany. Można to obejść na dwa sposoby: zalogować się przez „ssh [uzytkownik]@localhost”, lub dopisując zmienną o wartości „/run/user[identyfikator_z_pliku_passwd] do pliku bashrc:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# &amp;quot;systemctl --user &amp;quot; bez tego nie dziala
XDG_RUNTIME_DIR=/run/user/3501
export XDG_RUNTIME_DIR&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;su - [uzytkownik] i xdg&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;su_-_uzytkownik_i_xdg&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;11119-11548&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;import_i_wczytywanie_obrazow&quot;&gt;Import i wczytywanie obrazów&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Kiedy nie chcę żadnego rejestru.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman image ls
REPOSITORY                                          TAG                IMAGE ID      CREATED       SIZE
localhost/astech-mm                                 0.49.19.1          6e01cf1442ce  26 hours ago  962 MB
registry.access.redhat.com/ubi9/openjdk-17-runtime  1.20-2.1724037300  cf4676726e3f  2 weeks ago   368 MB

$ podman save --quiet -o astech-mm-049191.tar 6e01cf1442ce&lt;/pre&gt;

&lt;p&gt;
Wczytywanie pliku &lt;em&gt;astech-mm-049191.tar&lt;/em&gt; na innym hoście:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman load --quiet -i astech-mm-049191.tar
$ podman image ls                                                
REPOSITORY  TAG         IMAGE ID      CREATED       SIZE
&amp;lt;none&amp;gt;      &amp;lt;none&amp;gt;      6e01cf1442ce  26 hours ago  962 MB

$ podman tag 6e01cf1442ce astech:0.49.19.1
$ podman image ls
REPOSITORY           TAG         IMAGE ID      CREATED       SIZE
localhost/astech-mm  0.49.19.1   6e01cf1442ce  26 hours ago  962 MB&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Import i wczytywanie obraz\u00f3w&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;import_i_wczytywanie_obrazow&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;11549-12540&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;cannot_change_memory_protections&quot;&gt;cannot change memory protections&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Podczas uruchamiania kontenera pojawiają się błędy „error while loading shared libraries: [cośtam].so.[numer]: cannot change memory protections”
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman info | grep &amp;#039;graphRoot&amp;#039;
graphRoot: /home/lukasz/.local/share/containers/storage
graphRootAllocated: 482933219328
graphRootUsed: 214006886400

# semanage fcontext -a -t container_var_lib_t &amp;#039;/home/lukasz/.local/share/containers/storage(/.*)?&amp;#039;
# restorecon -Rv /home/lukasz/.local/share/containers/&lt;/pre&gt;

&lt;p&gt;
Źródło: &lt;a href=&quot;https://access.redhat.com/solutions/7021610&quot; class=&quot;urlextern&quot; title=&quot;https://access.redhat.com/solutions/7021610&quot; rel=&quot;ugc nofollow&quot;&gt;https://access.redhat.com/solutions/7021610&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;cannot change memory protections&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cannot_change_memory_protections&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;12541-13112&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;connection_reset_by_peer&quot;&gt;Connection reset by peer&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Podman w werji 4.x nieprawidłowo mapuje porty, jeżeli:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; aplikacja wystawia się na hoście 127.0.0.1 i porcie przykładowo 8080&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; podman run jest uruchomiony z parametrem -p 0.0.0.0:8080:8080 i oczekuję, że aplikacja wystawi się na całą adresację IPv4.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Aplikacja w kontenerze musi również słuchać na 0.0.0.0. Warto zostawić sobie do tego zmienną środowiskową, która będzie modyfikować działanie aplikacji.
&lt;/p&gt;

&lt;p&gt;
W podmanie 5.2.2 (który jest w dystrybucji Fedora 40) to działa już dobrze. Aplikacja może słuchać na lokalnym hoście, ale Podman może przemapować ten ruch na cały internet, lub wybrane podsieci. 
&lt;/p&gt;

&lt;p&gt;
Źródło: &lt;a href=&quot;https://github.com/containers/podman/issues/19602#issuecomment-1675709528&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/containers/podman/issues/19602#issuecomment-1675709528&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/containers/podman/issues/19602#issuecomment-1675709528&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Connection reset by peer&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;connection_reset_by_peer&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;13113-13877&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;kontrolowanie_cpu_i_pamieci&quot;&gt;kontrolowanie cpu i pamięci&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;$ podman run --rm --detach --cpus=1 --memory-swap=512M --memory=256M --memory-reservation=128M --volume /home/uzytkownik/kontenery/woluminy/jakis_katalog/:/opt/jupiter/app:rw,Z --publish 8111:8888 jupyter-test001
Error: OCI runtime error: crun: the requested cgroup controller `cpuset` is not available&lt;/pre&gt;

&lt;p&gt;
W powyższym przypadku brakuje mi uprawnień do przydzielania zasobów do kontenerów. Zakładając, że mam UID 1000, można dodać do pliku &lt;em&gt;/etc/systemd/system/user@1000.service.d/delegate.conf&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Service]
Delegate=memory pids cpu cpuset&lt;/pre&gt;

&lt;p&gt;
Trzeba się na chwilę wylogować.
&lt;/p&gt;

&lt;p&gt;
Źródło: &lt;a href=&quot;https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-resource-limits-fails-with-a-permissions-error&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-resource-limits-fails-with-a-permissions-error&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-resource-limits-fails-with-a-permissions-error&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;kontrolowanie cpu i pami\u0119ci&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kontrolowanie_cpu_i_pamieci&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;13878-14663&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;montowanie_woluminu_dla_nieuprzywilejowanego_uzytkownika&quot;&gt;Montowanie woluminu dla nieuprzywilejowanego użytkownika&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Poczas montowania woluminu katalogi w kontenerze mają uprawnienia użytkownika root:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;podman run --rm --detach --name=mek05006 --publish=0.0.0.0:2346:2346 --volume ./savegames:/opt/megamek/savegames:rw,Z --volume ./logs:/opt/megamek/logs:rw,Z megamek05006&lt;/pre&gt;

&lt;p&gt;
Jeżeli w Dockerfile zadeklarowano innego użytkownika do uruchomienia aplikacji:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[...]
USER 12
WORKDIR /opt/megamek/
CMD /usr/lib/jvm/java-17-temurin-jre/bin/java -jar MegaMek.jar -dedicated -port 2346&lt;/pre&gt;

&lt;p&gt;
to okaże się, że użytkownik o identyfikatorze 12 nie ma uprawnień zapisu do &lt;em&gt;/opt/megamek/savegames&lt;/em&gt; oraz &lt;em&gt;/opt/megamek/logs&lt;/em&gt;, a powinien mieć.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;bash-5.2$ ls -la
[...]
drwxr-xr-x. 2 root  root        6 Dec 27 09:22 savegames
drwxr-xr-x. 2 root  root        6 Dec 27 09:22 logs&lt;/pre&gt;

&lt;p&gt;
Pomaga parametr &lt;em&gt;U&lt;/em&gt; przy montowaniu woluminów:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;podman run --rm --detach --name=mek05006 --publish=0.0.0.0:2346:2346 --volume ./savegames:/opt/megamek/savegames:U,rw,Z --volume ./logs:/opt/megamek/logs:U,rw,Z megamek05006&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;bash-5.2$ ls -al /opt/megamek/
[...]
drwxr-xr-x. 2 games users       64 Dec 27 09:35 logs
drwxr-xr-x. 2 games users        6 Dec 27 09:22 savegames&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Montowanie woluminu dla nieuprzywilejowanego u\u017cytkownika&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;montowanie_woluminu_dla_nieuprzywilejowanego_uzytkownika&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;14664-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:podreczniktrenera&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>podreczniktrenera</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:podreczniktrenera&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;aurox_podrecznik_trenera&quot;&gt;Aurox Podręcznik Trenera&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ciekawostka, nie tylko już historyczna. Jest to jedna z najlepszych książek Linuksowych, jakie miałem przyjemność poznać. Mimo, że nie została ukończona i część informacji się zdezaktualizowała, to nadal zdarza mi się tam zaglądać.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:auroxpodreczniktrenera.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;wiki:auroxpodreczniktrenera.pdf (1.4 MB)&quot;&gt;auroxpodreczniktrenera.pdf&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:portynfs&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>portynfs</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:portynfs&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
/etc/sysconfig/nfs:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;MOUNTD_PORT=22222
STATD_PORT=22223
LOCKD_TCPPORT=22224
LOCKD_UDPPORT=22225&lt;/pre&gt;

&lt;p&gt;
Otwarte porty dla lokalnego nfs:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# nfs
-A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 111 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 111 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 2049 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 2049 -j ACCEPT

# nfs-mountd
-A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 22222 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 22222 -j ACCEPT

# nfs-statd
-A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 22223 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 22223 -j ACCEPT

# nfs-lockd
-A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 22224 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 22225 -j ACCEPT&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:python_systemd&amp;rev=1707335882">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-07T19:58:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>python_systemd</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:python_systemd&amp;rev=1707335882</link>
        <description>
&lt;p&gt;
Pliki aplikacji znajdują się w katalogu &lt;em&gt;/home/lukasz/magazyn/tkinter&lt;/em&gt;, gdzie jest również utworzony virtualenv.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=Notebook tkinter

[Service]
Name=notebook

# Aplikacja dziala na uzytkowniku book.
User=book

# Przekierowanie komunikatow aplikacji bezposrednio do journald.
Environment=PYTHONUNBUFFERED=1

# Ustawienie pythonowego virtualenv.
Environment=VIRTUALENV=/home/lukasz/magazyn/tkinter
Environment=PYTHONPATH=$VIRTUALENV/lib:$PYTHONPATH

# PATH nie rozumie zmiennych, wiec trzeba podac pelne sciezki.
Environment=PATH=/home/lukasz/magazyn/tkinter/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin

# To musi byc pelna sciezka, bez uzywania zmiennych.
WorkingDirectory=/home/lukasz/magazyn/tkinter/app

# Start aplikacji (musi zawierac pelna sciezke).
ExecStart=/home/lukasz/magazyn/tkinter/bin/jupyter notebook --no-browser --ip 0.0.0.0 --port 8010 --NotebookApp.token=\&amp;#039;\&amp;#039; --NotebookApp.terminals_enabled=False --NotebookApp.base_project_url=&amp;#039;/tkinter&amp;#039;

# Automatyczny restart aplikacji po awarii z opoznieniem 20 sekund,
# aby uniknac obciazenia CPU w razie nieudanych uruchomien.
Restart=always
RestartSec=20

# Powiadomienie systemd o uruchomieniu aplkacji.
Type=simple

# Plir z numerem ID procesu.
PIDFile=/var/run/book-tkinter.pid

[Install]

# Autostart aplikacji.
WantedBy=default.target&lt;/pre&gt;

&lt;p&gt;
Następny krok to &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:python_w_apache&quot; class=&quot;wikilink1&quot; title=&quot;wiki:python_w_apache&quot; data-wiki-id=&quot;wiki:python_w_apache&quot;&gt;utworzenie proxypass w Apache&lt;/a&gt;.
&lt;/p&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:python_tkinter&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>python_tkinter</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:python_tkinter&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Lista różnych elementów interfejsu dla Tkintera (nie jest mojego autorstwa, była dołączona do starego już tutoriala filmowego).
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=tkinter_widget_list.pdf&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=tkinter_widget_list.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.baszarek.pl/lib/exe/fetch.php?media=tkinter_widget_list.pdf&lt;/a&gt;
&lt;/p&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:python_w_apache&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>python_w_apache</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:python_w_apache&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;prosty_vhost_dla_pythona_w_apache&quot;&gt;Prosty vhost dla Pythona w Apache&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Założenia:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; aplikacje pythonowe to Jupyter Notebook, nasłuchujące na portach 8001-8012,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; chcę mieć poszczególne notebooki jako „podkatalogi” python.baszarek.pl,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; mam certyfikat z Let&amp;#039;s Encrypt.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;VirtualHost *:80&amp;gt;
  ServerName python.baszarek.pl:80
  Redirect permanent / https://python.baszarek.pl/
&amp;lt;/VirtualHost&amp;gt;

&amp;lt;VirtualHost *:443&amp;gt;
  ServerName python.baszarek.pl:443
  ServerAdmin root@localhost
  
  # PreserveHost pomaga przy logowaniu
  ProxyPreserveHost On
  ProxyPass /errno http://127.0.0.1:8001/errno
  ProxyPassReverse /errno http://127.0.0.1:8001/errno
  ProxyPass /glob http://127.0.0.1:8002/glob
  ProxyPassReverse /glob http://127.0.0.1:8002/glob
  ProxyPass /math http://127.0.0.1:8003/math
  ProxyPassReverse /math http://127.0.0.1:8003/math
  ProxyPass /os http://127.0.0.1:8004/os
  ProxyPassReverse /os http://127.0.0.1:8004/os
  ProxyPass /pathlib http://127.0.0.1:8005/pathlib
  ProxyPassReverse /pathlib http://127.0.0.1:8005/pathlib
  ProxyPass /pickle http://127.0.0.1:8006/pickle
  ProxyPassReverse /pickle http://127.0.0.1:8006/pickle
  ProxyPass /random http://127.0.0.1:8007/random
  ProxyPassReverse /random http://127.0.0.1:8007/random
  ProxyPass /shutil http://127.0.0.1:8008/shutil
  ProxyPassReverse /shutil http://127.0.0.1:8008/shutil
  ProxyPass /subprocess http://127.0.0.1:8009/subprocess
  ProxyPassReverse /subprocess http://127.0.0.1:8009/subprocess
  ProxyPass /tkinter http://127.0.0.1:8010/tkinter
  ProxyPassReverse /tkinter http://127.0.0.1:8010/tkinter
  ProxyPass /zlib http://127.0.0.1:8011/zlib
  ProxyPassReverse /zlib http://127.0.0.1:8011/zlib
  ProxyPass /zoneinfo http://127.0.0.1:8012/zoneinfo
  ProxyPassReverse /zoneinfo http://127.0.0.1:8012/zoneinfo

  &amp;lt;Location /errno/api/kernels/&amp;gt;
    ProxyPass ws://127.0.0.1:8001/errno/api/kernels/
    ProxyPassReverse ws://127.0.0.1:8001/errno/api/kernels/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /errno/terminals/websocket/&amp;gt;
    ProxyPass ws://localhost:8001/errno/terminals/websocket/
    ProxyPassReverse ws://localhost:8001/errno/terminals/websocket/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /glob/api/kernels/&amp;gt;
    ProxyPass ws://127.0.0.1:8002/glob/api/kernels/
    ProxyPassReverse ws://127.0.0.1:8002/glob/api/kernels/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /glob/terminals/websocket/&amp;gt;
    ProxyPass ws://localhost:8002/glob/terminals/websocket/
    ProxyPassReverse ws://localhost:8002/glob/terminals/websocket/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /math/api/kernels/&amp;gt;
    ProxyPass ws://127.0.0.1:8003/math/api/kernels/
    ProxyPassReverse ws://127.0.0.1:8003/math/api/kernels/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /math/terminals/websocket/&amp;gt;
    ProxyPass ws://localhost:8003/mathterminals/websocket/
    ProxyPassReverse ws://localhost:8003/math/terminals/websocket/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /os/api/kernels/&amp;gt;
    ProxyPass ws://127.0.0.1:8004/os/api/kernels/
    ProxyPassReverse ws://127.0.0.1:8004/os/api/kernels/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /os/terminals/websocket/&amp;gt;
    ProxyPass ws://localhost:8004/os/terminals/websocket/
    ProxyPassReverse ws://localhost:8004/os/terminals/websocket/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /pathlib/api/kernels/&amp;gt;
    ProxyPass ws://127.0.0.1:8005/pathlib/api/kernels/
    ProxyPassReverse ws://127.0.0.1:8005/pathlib/api/kernels/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /pathlib/terminals/websocket/&amp;gt;
    ProxyPass ws://localhost:8005/pathlib/terminals/websocket/
    ProxyPassReverse ws://localhost:8005/pathlib/terminals/websocket/
  &amp;lt;/Location&amp;gt;
  
  &amp;lt;Location /pickle/api/kernels/&amp;gt;
    ProxyPass ws://127.0.0.1:8006/pickle/api/kernels/
    ProxyPassReverse ws://127.0.0.1:8006/pickle/api/kernels/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /pickle/terminals/websocket/&amp;gt;
    ProxyPass ws://localhost:8006/pickle/terminals/websocket/
    ProxyPassReverse ws://localhost:8006/pickle/terminals/websocket/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /random/terminals/websocket/&amp;gt;
    ProxyPass ws://localhost:8007/random/terminals/websocket/
    ProxyPassReverse ws://localhost:8007/random/terminals/websocket/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /random/api/kernels/&amp;gt;
    ProxyPass ws://127.0.0.1:8007/random/api/kernels/
    ProxyPassReverse ws://127.0.0.1:8007/random/api/kernels/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /shutil/terminals/websocket/&amp;gt;
    ProxyPass ws://localhost:8008/shutil/terminals/websocket/
    ProxyPassReverse ws://localhost:8008/shutil/terminals/websocket/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /shutil/api/kernels/&amp;gt;
    ProxyPass ws://127.0.0.1:8008/shutil/api/kernels/
    ProxyPassReverse ws://127.0.0.1:8008/shutil/api/kernels/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /subprocess/terminals/websocket/&amp;gt;
    ProxyPass ws://localhost:8009/subprocess/terminals/websocket/
    ProxyPassReverse ws://localhost:8009/subprocess/terminals/websocket/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /subprocess/api/kernels/&amp;gt;
    ProxyPass ws://127.0.0.1:8009/subprocess/api/kernels/
    ProxyPassReverse ws://127.0.0.1:8009/subprocess/api/kernels/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /tkinter/terminals/websocket/&amp;gt;
    ProxyPass ws://localhost:8010/tkinter/terminals/websocket/
    ProxyPassReverse ws://localhost:8010/tkinter/terminals/websocket/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /tkinter/api/kernels/&amp;gt;
    ProxyPass ws://127.0.0.1:8010/tkinter/api/kernels/
    ProxyPassReverse ws://127.0.0.1:8010/tkinter/api/kernels/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /zlib/terminals/websocket/&amp;gt;
    ProxyPass ws://localhost:8011/zlib/terminals/websocket/
    ProxyPassReverse ws://localhost:8011/zlib/terminals/websocket/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /zlib/api/kernels/&amp;gt;
    ProxyPass ws://127.0.0.1:8011/zlib/api/kernels/
    ProxyPassReverse ws://127.0.0.1:8011/zlib/api/kernels/
  &amp;lt;/Location&amp;gt;

  &amp;lt;Location /zoneinfo/terminals/websocket/&amp;gt;
    ProxyPass ws://localhost:8012/zoneinfo/terminals/websocket/
    ProxyPassReverse ws://localhost:8012/zoneinfo/terminals/websocket/
  &amp;lt;/Location&amp;gt;
  
  &amp;lt;Location /zoneinfo/api/kernels/&amp;gt;
    ProxyPass ws://127.0.0.1:8012/zoneinfo/api/kernels/
    ProxyPassReverse ws://127.0.0.1:8012/zoneinfo/api/kernels/
  &amp;lt;/Location&amp;gt;

  CustomLog /var/log/httpd/notebook-access.log combined
  ErrorLog /var/log/httpd/notebook-errors.log

  Header always set Strict-Transport-Security &amp;quot;max-age=15552000; includeSubDomains&amp;quot;
  SSLEngine on
  SSLProtocol -all +TLSv1.2

  Include /etc/letsencrypt/options-ssl-apache.conf
  SSLCertificateFile /etc/letsencrypt/live/python.baszarek.pl/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/python.baszarek.pl/privkey.pem

&amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:qt5motyw&amp;rev=1729328016">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-19T08:53:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>qt5motyw</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:qt5motyw&amp;rev=1729328016</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;qt5_i_motywy&quot;&gt;QT5 i motywy&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Skonfigurować wygląd w programie qt5ct.
&lt;/p&gt;

&lt;p&gt;
Aplikacje trzeba uruchamiać ze zmienną QT_QPA_PLATFORMTHEME=&amp;#039;qt5ct&amp;#039;, na przykład:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;QT_QPA_PLATFORMTHEME=&amp;#039;qt5ct&amp;#039; qt5ct&lt;/pre&gt;

&lt;p&gt;
Nie wszystkie aplikacje czytają tę zmienną. Czasem zadziała, a czasem nie. Można też poprawić plik desktop aplikacji, żeby zmieniła swój domyślny motyw, na przykład:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Exec=env QT_QPA_PLATFORMTHEME=qt5ct /usr/bin/vlc --started-from-file %U&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:raspbian_stip&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>raspbian_stip</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:raspbian_stip&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;statyczne_ip_na_raspbianie&quot;&gt;Statyczne IP na Raspbianie&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
W pliku &lt;em&gt;/etc/dhcpcd.conf&lt;/em&gt; należy dopisać:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;interface enxb827eb026164
static ip_address=192.168.222.6/24
static routers=192.168.222.1
static domain_name_servers=192.168.222.3&lt;/pre&gt;

&lt;p&gt;
Nazwy interfejsów można podejrzeć klasycznym &lt;em&gt;ifcoinfig&lt;/em&gt;.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:raspi_hdparm&amp;rev=1664369483">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-28T12:51:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>raspi_hdparm</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:raspi_hdparm&amp;rev=1664369483</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;raspbian_i_dysk_usb_na_dane&quot;&gt;Raspbian i dysk usb na dane&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Do RaspberryPi podłączono przenośny dysk USB z myślą o trzymaniu tam muzyki oraz filmów i udostępnieniu zasoby przy użyciu Samby. System jest uruchomiony 24/7. Pliki z dysku są używane rzadko, ale jeżeli już, to przez długi czas.
&lt;/p&gt;

&lt;p&gt;
Mniej więcej optymalne ustawienia dla dysku:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt -V install hdparm
hdparm -B 100 /dev/sda
hdparm -S 200 /dev/sda&lt;/pre&gt;

&lt;p&gt;
Spowoduje to zatrzymanie dysku i zaparkowanie głowicy po 16 minutach i 40 sekundach braku aktywności na plikach.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:raspi_instalacja&amp;rev=1722773842">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-04T12:17:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>raspi_instalacja</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:raspi_instalacja&amp;rev=1722773842</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;kopiowanie_obrazu_na_karte_sd&quot;&gt;Kopiowanie obrazu na kartę SD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Coraz mniej ludzi używa dd i żeby nie szukać znowu przez pół internetu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xzcat 2024-07-04-raspios-bookworm-armhf.img.xz | dd of=/dev/JAKIŚDYSK bs=4M conv=fsync status=progress&lt;/pre&gt;

&lt;p&gt;
Trochę trwa, ale to tylko przez dekompresję. Uważać na nazwę urządzenia blokowego, który nadpisuję.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:reinstall_mariadb&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>reinstall_mariadb</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:reinstall_mariadb&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;reinstalacja_mariadb&quot;&gt;Reinstalacja MariaDB&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Na przykładzie Fedory z włączonym SElinuxem.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dnf remove mariadb
rm -fr /var/lib/mysql/* /etc/my.cnf
dnf install mariadb mariadb-server
semanage fcontext -a -t mysql_db_t &amp;quot;/usr/lib/mysql(/.*)?&amp;quot;
systemctl restart mariadb
mysql_secure_installation&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:rhel_megaraid&amp;rev=1698344301">
        <dc:format>text/html</dc:format>
        <dc:date>2023-10-26T18:18:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>rhel_megaraid</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:rhel_megaraid&amp;rev=1698344301</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;rhel_i_megaraid&quot;&gt;RHEL i Megaraid&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Instrukcja instalacji RHEL8 (i lub podobnych) z użyciem sterowników megaraid z elrepo, na przykładzie RHEL 8.8 oraz Dell r710 z kartą raidową:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Arhel_megaraid&amp;amp;media=wiki:dell_raid_karta.jpg&quot; class=&quot;media&quot; title=&quot;wiki:dell_raid_karta.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=bdf21b&amp;amp;media=wiki:dell_raid_karta.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Na stronie &lt;a href=&quot;https://elrepo.org/linux/dud/el8/x86_64/&quot; class=&quot;urlextern&quot; title=&quot;https://elrepo.org/linux/dud/el8/x86_64/&quot; rel=&quot;ugc nofollow&quot;&gt;https://elrepo.org/linux/dud/el8/x86_64/&lt;/a&gt; znajdują się obrazy ISO ze sterownikami do kontrolera RAID w formie pliku RPM. W tym wypadku należy pobrać plik &lt;a href=&quot;https://elrepo.org/linux/dud/el8/x86_64/dd-megaraid_sas-07.719.03.00-3.el8_8.elrepo.iso&quot; class=&quot;urlextern&quot; title=&quot;https://elrepo.org/linux/dud/el8/x86_64/dd-megaraid_sas-07.719.03.00-3.el8_8.elrepo.iso&quot; rel=&quot;ugc nofollow&quot;&gt;https://elrepo.org/linux/dud/el8/x86_64/dd-megaraid_sas-07.719.03.00-3.el8_8.elrepo.iso&lt;/a&gt; .
&lt;/p&gt;

&lt;p&gt;
Należy uruchomić konsolę iDraca i zamontować w niej wirtualny CD z obrazem iso RHEL 8.8. Następnie należy uruchomić serwer ponownie, wcisnąć F11 i wybrać uruchomienie z wirtualnego napędu cd-rom.
&lt;/p&gt;

&lt;p&gt;
Po zaznaczeniu &lt;em&gt;Install Red Hat Enterprise Linux 8.x&lt;/em&gt; wcisnąć TAB i dopisać &lt;em&gt;inst.dd&lt;/em&gt; do parametrów kernela. Potem należy wcisnąć Enter . Instalator RHEL będzie uruchamiał się zwyczajnie do tego momentu. Należy wówczas zmienić obraz iso w wirtualnym cd-rom i wybrać „r” kilka razy, aż do momentu pokazania się płyty opisanej jako OEMDRV.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Arhel_megaraid&amp;amp;media=wiki:dell_raid_instdd1.jpg&quot; class=&quot;media&quot; title=&quot;wiki:dell_raid_instdd1.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=646a6e&amp;amp;media=wiki:dell_raid_instdd1.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Należy wybrać dwa razy opcje „1”, a potem opcję „c”.
&lt;/p&gt;

&lt;p&gt;
Kiedy pakietu kmod-megaraid-sas zostanie pobrany z obrazu OEMDRV, trzeba ponownie zmienić plik ISO w wirtualny napędzie cd-rom na instalator RHEL 8. Należy wybrać opcje „r”, aż pojawi się ISO oznaczone jako &lt;em&gt;RHEL-8-8-X-BaseOS…&lt;/em&gt; :
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Arhel_megaraid&amp;amp;media=wiki:dell_raid_instdd2.jpg&quot; class=&quot;media&quot; title=&quot;wiki:dell_raid_instdd2.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=6d15fb&amp;amp;media=wiki:dell_raid_instdd2.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Następnie należy wybrać opcję „c”. Instalator wykryje dyski utworzony z puli sprzętowego raida. Można utworzyć na nich partycję i zainstalować system operacyjny. Jako ostatni zostanie zainstalowany dodatkowy pakiet RPM ze sterownikami megaraid.
&lt;/p&gt;

&lt;p&gt;
Powodzenia!
&lt;/p&gt;

&lt;p&gt;
Źródło - częściowo &lt;a href=&quot;https://www.ibm.com/support/pages/install-red-hat-enterprise-linux-8x-rhel-8-81-82-or-83-systems-sas-controllers&quot; class=&quot;urlextern&quot; title=&quot;https://www.ibm.com/support/pages/install-red-hat-enterprise-linux-8x-rhel-8-81-82-or-83-systems-sas-controllers&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.ibm.com/support/pages/install-red-hat-enterprise-linux-8x-rhel-8-81-82-or-83-systems-sas-controllers&lt;/a&gt; .
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:rhel_subscription_manager&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>rhel_subscription_manager</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:rhel_subscription_manager&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;rhel_subscription_manager&quot;&gt;RHEL Subscription Manager&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Dodawanie nowego repozytorium za pomocą &lt;em&gt;subscription-manager&lt;/em&gt; na przykładzie repozytorium z pakietami devel oraz Ansible 2.9.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms
# subscription-manager repos --enable ansible-2.9-for-rhel-8-x86_64-rpms&lt;/pre&gt;

&lt;p&gt;
Dodawanie subskrypcji do zainstalowanego RHEL-a:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# subscription-manager register
[podać login oraz hasło do konta na redhat.com]

# subscription-manager list --available --all
+-------------------------------------------+
  Available Subscriptions
+-------------------------------------------+
Subscription Name:   Red Hat Enterprise Linux Developer Suite
[...]
Pool ID:             [hash md5 Pool ID]
[...]
# subscription-manager attach --pool=[hash md5 Pool ID]&lt;/pre&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RHEL Subscription Manager&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rhel_subscription_manager&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-828&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;konwersja_centos_7_8_do_rhel_7_8&quot;&gt;Konwersja CentOS 7/8 do RHEL 7/8&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Ścieżka do pliku convert2rhel.repo powinna zawierać numer wersji: 7, lub 8.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release https://www.redhat.com/security/data/fd431d51.txt
# curl --create-dirs -o /etc/rhsm/ca/redhat-uep.pem https://ftp.redhat.com/redhat/convert2rhel/redhat-uep.pem
# curl -o /etc/yum.repos.d/convert2rhel.repo https://ftp.redhat.com/redhat/convert2rhel/8/convert2rhel.repo
# dnf install convert2rhel

# convert2rhel --username [uzytkownik] --password [haslo] --pool [hash md5 Pool ID]&lt;/pre&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Konwersja CentOS 7\/8 do RHEL 7\/8&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;konwersja_centos_7_8_do_rhel_7_8&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;829-1405&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;konwersja_przy_uzyciu_obrazu_iso&quot;&gt;Konwersja przy użyciu obrazu iso&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Jako, że od 1 stycznia 2022 upłynęło sporo czasu, convert2rhel działa coraz gorzej i czasami wykrzacza się na zależnościach pakietów. Można wówczas podzielić migrację na dwie części: migrację z CentOS 8.5 do RHEL 8.5 i potem aktualizację do RHEL 8.6.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;przygotowanie_repozytorium_z_iso&quot;&gt;Przygotowanie repozytorium z ISO&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Należy pobrać na wirtualizator plik &lt;em&gt;rhel-8.5-x86_64-dvd.iso&lt;/em&gt; - ten o rozmiarze 10 gigabajtów. Następnie należy „włożyć płytę DVD” do maszyny wirtualnej i zamontować. Można również pobrać ISO na maszynę wirtualną, lub fizyczną.
&lt;/p&gt;

&lt;p&gt;
Montowanie płyty DVD, włożonej do wirtualki:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mkdir /mnt/rhiso
# mount -t iso9660 -o loop /dev/sr0 /mnt/rhiso/&lt;/pre&gt;

&lt;p&gt;
Utworzenie pliku repo z zawartością płyty DVD:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# cat /etc/yum.repos.d/iso.repo
[rhel-iso-baseos]
name=rhel-8-baseos
baseurl=file:///mnt/rhiso/BaseOS/
enabled=1

[rhel-iso-appstream]
name=rhel-8-appstream
baseurl=file:///mnt/rhiso/AppStream/
enabled=1&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;migracja_do_rhel&quot;&gt;Migracja do RHEL&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Migracja bez repozytoriów sieciowych:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# convert2rhel --username UZYTKOWNIK --password HASLO --pool POOL_ID --disable-submgr --enablerepo rhel-iso-baseos --enablerepo rhel-iso-appstream
# dnf install subscription-manager&lt;/pre&gt;

&lt;p&gt;
Jako, że pliki rpm są lokalne, zakończy się bardzo szybko. Po zakończonej migracji należy zrestartować system.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;aktualizacja_do_rhel_86&quot;&gt;Aktualizacja do RHEL 8.6&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Najpierw należy zmienić linijki &lt;em&gt;enabled=1&lt;/em&gt; na &lt;em&gt;enabled=0&lt;/em&gt; w pliku &lt;em&gt;iso.repo&lt;/em&gt;. Następnie trzeba zwyczajnie zarejestrować system:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;subscription-manager register
subscription-manager attach --pool POOL_ID&lt;/pre&gt;

&lt;p&gt;
Następnie utworzyć (lub wyedytować) plik &lt;em&gt;/etc/yum.repos.d/redhat.repo&lt;/em&gt; w celu tymczasowego wyłączenia weryfikacji certyfikatu SSL poszczególnych repozytoriów, to znaczy zmieniając linijki &lt;em&gt;sslverify = 1&lt;/em&gt; na &lt;em&gt;sslverify = 0&lt;/em&gt; w każdym z repozytoriów. W edytorzy vi wystarczy:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;:%s/sslverify = 1/sslverify = 0/g
:wq&lt;/pre&gt;

&lt;p&gt;
Można teraz zaktualizować system:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# dnf clean all
# dnf update&lt;/pre&gt;

&lt;p&gt;
Po aktualizacji system należy zrestartować.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;sprzatanie&quot;&gt;Sprzątanie&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Po aktualizacji pakietów w katalogu /etc pojawią się już certyfikaty SSL repozytoriów Red Hata, więc można zacząć ich używać. Należy poprawić linijki &lt;em&gt;sslverify&lt;/em&gt; w pliku /etc/yum.repos.d/redhat.repo. W edytorze vi wystarczy:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;:%s/sslverify = 0/sslverify = 1/g
:wq&lt;/pre&gt;

&lt;p&gt;
Teraz trzeba zainstalować jakiś pakiet na próbę:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# dnf install vim&lt;/pre&gt;

&lt;p&gt;
i powinno się udać.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Konwersja przy u\u017cyciu obrazu iso&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;konwersja_przy_uzyciu_obrazu_iso&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1406-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:rm&amp;rev=1699022119">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-03T14:35:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>rm</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:rm&amp;rev=1699022119</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;rm_i_lista_argumentow&quot;&gt;rm i lista argumentów&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Program rm posiada ograniczenia na ilość plików, które można usunąć jednocześnie, na przykład:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# rm -fr /var/log/backup/old-*
-bash: /usr/bin/rm: Argument list too long&lt;/pre&gt;

&lt;p&gt;
Można sobie poradzić usuwając pliki alfabetycznie:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# for i in {{a..z},{A..Z},{0..9}} ; do echo -n ${i} ; rm -f /var/log/backup/old-${i}* ; done
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:rozaniec_mariadb&amp;rev=1664983787">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-05T15:29:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>rozaniec_mariadb</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:rozaniec_mariadb&amp;rev=1664983787</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;rozaniec_w_mariadb&quot;&gt;Różaniec w MariaDB&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Postanowiłem zrobić bazę danych w MariaDB, która jest w stanie bardzo szybko odmawiać różaniec. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;MariaDB [rozaniec]&amp;gt; describe modlitwy;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| tytul | varchar(50) | YES  |     | NULL    |                |
| slowa | text        | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.001 sec)

MariaDB [rozaniec]&amp;gt; describe tajemnice;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| id     | int(11)     | NO   | PRI | NULL    | auto_increment |
| rodzaj | varchar(40) | YES  |     | NULL    |                |
| numer  | smallint(6) | YES  |     | NULL    |                |
| nazwa  | varchar(60) | YES  |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+
4 rows in set (0.001 sec)

MariaDB [rozaniec]&amp;gt; describe licznik;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| tik   | tinyint(1) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
1 row in set (0.001 sec)&lt;/pre&gt;

&lt;p&gt;
Ponieważ w tabeli licznik umieszczany jest nowy wiersz po każdym różańcu, jest ona typu &lt;em&gt;Memory&lt;/em&gt;, żeby szybciej działać.
&lt;/p&gt;

&lt;p&gt;
Dla ułatwienia utworzono procedury:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;MariaDB [rozaniec]&amp;gt; show procedure status;
+----------+---------------------+-----------+-----------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db       | Name                | Type      | Definer               | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+----------+---------------------+-----------+-----------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| mysql    | AddGeometryColumn   | PROCEDURE | mariadb.sys@localhost | 2022-10-05 16:21:50 | 2022-10-05 16:21:50 | INVOKER       |         | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
| mysql    | DropGeometryColumn  | PROCEDURE | mariadb.sys@localhost | 2022-10-05 16:21:50 | 2022-10-05 16:21:50 | INVOKER       |         | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
| rozaniec | dziesiatek_rozanca  | PROCEDURE | root@localhost        | 2022-10-05 16:23:45 | 2022-10-05 16:23:45 | DEFINER       |         | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
| rozaniec | odmawianie_rozanca  | PROCEDURE | root@localhost        | 2022-10-05 16:23:45 | 2022-10-05 16:23:45 | DEFINER       |         | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
| rozaniec | poczatek_rozanca    | PROCEDURE | root@localhost        | 2022-10-05 16:23:45 | 2022-10-05 16:23:45 | DEFINER       |         | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
| rozaniec | tajemnice_bolesne   | PROCEDURE | root@localhost        | 2022-10-05 16:23:45 | 2022-10-05 16:23:45 | DEFINER       |         | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
| rozaniec | tajemnice_chwalebne | PROCEDURE | root@localhost        | 2022-10-05 16:23:45 | 2022-10-05 16:23:45 | DEFINER       |         | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
| rozaniec | tajemnice_radosne   | PROCEDURE | root@localhost        | 2022-10-05 16:23:45 | 2022-10-05 16:23:45 | DEFINER       |         | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
| rozaniec | tajemnice_swiatla   | PROCEDURE | root@localhost        | 2022-10-05 16:23:45 | 2022-10-05 16:23:45 | DEFINER       |         | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
+----------+---------------------+-----------+-----------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
9 rows in set (0.001 sec)&lt;/pre&gt;

&lt;p&gt;
Procedury są bardzo proste i zawierają powtarzające się selecty słów poszczególnych modlitw:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;MariaDB [rozaniec]&amp;gt; show create procedure odmawianie_rozanca;
+--------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| Procedure          | sql_mode                                                                                  | Create Procedure                                                                                                                                                       | character_set_client | collation_connection | Database Collation |
+--------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| odmawianie_rozanca | STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | CREATE DEFINER=`root`@`localhost` PROCEDURE `odmawianie_rozanca`()
BEGIN while 1=1 do call tajemnice_chwalebne(); insert into licznik (tik) values (1); end while; END | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
+--------------------+-------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
1 row in set (0.000 sec)

MariaDB [rozaniec]&amp;gt; show create procedure tajemnice_chwalebne;
+---------------------+-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| Procedure           | sql_mode                                                                                  | Create Procedure                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | character_set_client | collation_connection | Database Collation |
+---------------------+-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| tajemnice_chwalebne | STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | CREATE DEFINER=`root`@`localhost` PROCEDURE `tajemnice_chwalebne`()
BEGIN call poczatek_rozanca(); select nazwa from tajemnice where rodzaj=&amp;#039;Chwalebne&amp;#039; and numer=1; call dziesiatek_rozanca(); select nazwa from tajemnice where rodzaj=&amp;#039;Chwalebne&amp;#039; and numer=2; call dziesiatek_rozanca(); select nazwa from tajemnice where rodzaj=&amp;#039;Chwalebne&amp;#039; and numer=3; call dziesiatek_rozanca(); select nazwa from tajemnice where rodzaj=&amp;#039;Chwalebne&amp;#039; and numer=4; call dziesiatek_rozanca(); select nazwa from tajemnice where rodzaj=&amp;#039;Chwalebne&amp;#039; and numer=5; call dziesiatek_rozanca(); END | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
+---------------------+-------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
1 row in set (0.001 sec)&lt;/pre&gt;

&lt;p&gt;
Malutki skrypt, który otwiera 24 połączenia do bazy danych oraz odmawia różaniec na 24 wątkach po 3,5GHz:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat rozaniec.py 
#!/usr/bin/python

import subprocess
command = &amp;#039;mysql -e &amp;quot;call odmawianie_rozanca()&amp;quot; rozaniec &amp;amp;&amp;gt;/dev/null&amp;#039;

p1 = subprocess.Popen(command, shell=True)
p2 = subprocess.Popen(command, shell=True)
p3 = subprocess.Popen(command, shell=True)
p4 = subprocess.Popen(command, shell=True)
p5 = subprocess.Popen(command, shell=True)
p6 = subprocess.Popen(command, shell=True)
p7 = subprocess.Popen(command, shell=True)
p8 = subprocess.Popen(command, shell=True)
p9 = subprocess.Popen(command, shell=True)
p10 = subprocess.Popen(command, shell=True)
p11 = subprocess.Popen(command, shell=True)
p12 = subprocess.Popen(command, shell=True)
p13 = subprocess.Popen(command, shell=True)
p14 = subprocess.Popen(command, shell=True)
p15 = subprocess.Popen(command, shell=True)
p16 = subprocess.Popen(command, shell=True)
p17 = subprocess.Popen(command, shell=True)
p18 = subprocess.Popen(command, shell=True)
p19 = subprocess.Popen(command, shell=True)
p20 = subprocess.Popen(command, shell=True)
p21 = subprocess.Popen(command, shell=True)
p22 = subprocess.Popen(command, shell=True)
p23 = subprocess.Popen(command, shell=True)
p24 = subprocess.Popen(command, shell=True)&lt;/pre&gt;

&lt;p&gt;
Przekierowanie wyjścia do /dev/null nie jest wymagane, ale wąskim gardłem okazało się łącze sieciowe z serwera do laptopa, które nie nadążało z przesyłaniem słów modlitwy w celu wypisania ich na terminal.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Arozaniec_mariadb&amp;amp;media=wiki:rozaniec_htop.jpg&quot; class=&quot;media&quot; title=&quot;wiki:rozaniec_htop.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=10e1a6&amp;amp;media=wiki:rozaniec_htop.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Po jakimś czasie zaczyna robić się głośno.
&lt;/p&gt;

&lt;p&gt;
Serwer jest w stanie odmawiać ponad dwieście tysięcy różańców w ciągu minuty.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;MariaDB [rozaniec]&amp;gt; select count(tik) from licznik;
+------------+
| count(tik) |
+------------+
|     223490 |
+------------+
1 row in set (0.013 sec)&lt;/pre&gt;

&lt;p&gt;
Najprostszym sposobem na zatrzymanie podprocesów ze skryptu pythona jest restart bazy danych.
&lt;/p&gt;

&lt;p&gt;
Prace optymalizacyjne trwają.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:rpm_lista&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>rpm_lista</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:rpm_lista&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;lista_zainstalowanych_pakietow_rpm&quot;&gt;Lista zainstalowanych pakietów rpm&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Lista zainstalowanych pakietów rpm, przygotowana jako parametr dla Dnf/Yum na innym hoście:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rpm -qa --qf &amp;quot;%{NAME} &amp;quot;&lt;/pre&gt;

&lt;p&gt;
Lista pakeietów rpm posortowana po rozmiarze:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rpm -qa --qf &amp;quot;%{SIZE} %{NAME} \n&amp;quot; | sort -n&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:serwerownia&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>serwerownia</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:serwerownia&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;serwerownia&quot;&gt;Serwerownia&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Buduję swoją serwerownię na kółeczkach. Zdjęcia z postępów prac.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Aserwerownia&amp;amp;media=wiki:imag0148.jpg&quot; class=&quot;media&quot; title=&quot;wiki:imag0148.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=0363bb&amp;amp;media=wiki:imag0148.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Aserwerownia&amp;amp;media=wiki:imag0149.jpg&quot; class=&quot;media&quot; title=&quot;wiki:imag0149.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=ad9923&amp;amp;media=wiki:imag0149.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Aserwerownia&amp;amp;media=wiki:imag0150.jpg&quot; class=&quot;media&quot; title=&quot;wiki:imag0150.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=c85b2c&amp;amp;media=wiki:imag0150.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Aserwerownia&amp;amp;media=wiki:imag0151.jpg&quot; class=&quot;media&quot; title=&quot;wiki:imag0151.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;tok=92496d&amp;amp;media=wiki:imag0151.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:slowniczek_rsync&amp;rev=1706944155">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-03T07:09:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>slowniczek_rsync</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:slowniczek_rsync&amp;rev=1706944155</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;slowniczek_rsync&quot;&gt;Słowniczek rsync&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Rsync ze wszystkim:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rsync -vaxAXHSz --delete --dry-run /źródło [user]@[host]:/cel
       ||||||||   |        |
       ||||||||   |        ↳ tylko udaje kopiowanie
       ||||||||   ↳ usuwa pliki w katalogu docelowym, jeżeli źródło ich nie ma
       |||||||↳ kompresuje pliki przed kopiowaniem
       ||||||↳ skupia rozproszone po partycji pliki
       |||||↳ kopiuje twarde linki
       ||||↳ kopiuje artybuty
       |||↳ kopiuje ACL
       ||↳ pomija punkty montowania
       |↳ rlptgoD *
       ↳ dużo napisów

   * rekursywnie, kopiuje symlinki, zachowuje uprawnienia,
     zachowuje czasy modyfikacji, zachowuje właściciela,
     kopiuje specjalne pliki&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;S\u0142owniczek rsync&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;slowniczek_rsync&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-739&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;rsync_przez_tunel_ssh&quot;&gt;Rsync przez tunel SSH&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
W przypadku, kiedy nie ma połączenia do zdalnego hosta:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh -L 1111:192.168.100.100:22 -l [user] ip.routera.zdalngo.hosta
rsync -vaxAXHSz --delete -e &amp;#039;ssh -l [user] -p 1111&amp;#039; zrodlo/ localhost:/cel/&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Rsync przez tunel SSH&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rsync_przez_tunel_ssh&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;740-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:slowniczek_snap&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>slowniczek_snap</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:slowniczek_snap&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;slowniczek_snap&quot;&gt;Słowniczek SNAP&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;div class=&quot;table sectionedit2&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Systemd                 &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; SNAP &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; systemctl list-units    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; snap services    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; systemctl status httpd  &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; systemctl status snap.nextcloud.apache &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; systemctl disable httpd &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; snap stop –disable snap.nextcloud.apache &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; systemctl restart httpd &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; snap restart snap.nextcloud.apache &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; journalctl -u httpd     &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; snap logs -n „all” nextcloud.apache &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; journalctl              &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; snap logs -n „all” nextcloud &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;34-447&amp;quot;} --&gt;
&lt;p&gt;
&lt;strong&gt;Firewall na SNAPie:&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;snap get nextcloud ports
snap set nextcloud ports.http=80
snap set nextcloud ports.https=443 &lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:socks_proxy&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>socks_proxy</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:socks_proxy&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;socks_proxy&quot;&gt;Socks proxy&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Założenia:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; zdalny host z otwartym portem 22 to uplink.pl, a użytkownik to mostek.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Na lokalnym hoście w terminalu wpisać:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh -D 4444 -f -C -q -N mostek@uplink.pl -p 22&lt;/pre&gt;

&lt;p&gt;
Potem ustawić w przeglądarce:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Asocks_proxy&amp;amp;media=wiki:socks_proxy.jpg&quot; class=&quot;media&quot; title=&quot;wiki:socks_proxy.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=4e414b&amp;amp;media=wiki:socks_proxy.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:sortip&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sortip</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:sortip&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;sortowanie_adresow_ip&quot;&gt;Sortowanie adresów IP&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;em&gt;Miejsce na różne pomysły.&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Sortowowanie pliku z adresami IPv4 po ostatnim oktecie.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat plik | sort -n -t. -k3&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:sortowainels&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sortowainels</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:sortowainels&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Ładne sortowanie w ls:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ls --sort=extension --color -h -al&lt;/pre&gt;

&lt;p&gt;
oraz stosowany alias:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;alias &amp;#039;dir&amp;#039;=&amp;#039;ls --sort=extension --color -h -al&amp;#039;&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:spec&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>spec</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:spec&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Spec dla jednoplikowego programu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar -tf locate_plus-0.1.tar.gz 
locate_plus-0.1/
locate_plus-0.1/locate_plus&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;Name:		locate_plus
Version:	0.1
Release:	1%{?dist}
Summary:	Base grabber

Group:		Amusements/Games
License:	Public Domain
URL:		http://www.jankowalski.pl/
Source0:	%{name}-%{version}.tar.gz

BuildArch:   noarch
Requires:	bash, locate

%description
locate_plus detects and grab all your base.

%description -l pl
locate_plus namierza i zabiera wszystkie twoja baza.

%prep
%setup -q

%install
rm -rf $RPM_BUILD_ROOT
%__mkdir_p $RPM_BUILD_ROOT%{_bindir}
%__install -m 755 locate_plus $RPM_BUILD_ROOT%{_bindir}

%files
%defattr(-,root,root)
%{_bindir}/locate_plus

%clean
rm -rf $RPM_BUILD_ROOT

%changelog
* Mon Nov 23 2015 Jan Kowalski &amp;lt;jankowalski@email.pl&amp;gt;
- Initial release&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:swapfile&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>swapfile</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:swapfile&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Tworzenie swapfile:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;touch /var/pamietnik.img
chmod 600 /var/pamietnik.img
dd if=/dev/zero of=/var/pamietnik.img bs=1024k count=256k
/usr/sbin/mkswap /var/pamietnik.img&lt;/pre&gt;

&lt;p&gt;
Włączanie:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;swapon /var/pamietnik.img&lt;/pre&gt;

&lt;p&gt;
Wyłączanie:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;swapoff /var/pamietnik.img&lt;/pre&gt;

&lt;p&gt;
Ograniczeine używania swapfile, na przykład z powodu umieszczenia go na dysku SSD:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sysctl vm.swappiness=10&lt;/pre&gt;

&lt;p&gt;
ograniczenie na stałe w pliku /etc/sysctl.d/99-sysctl.conf:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vm.swappiness=10&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:syntax&amp;rev=1707739749">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-12T12:09:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>syntax</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:syntax&amp;rev=1707739749</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;formatting_syntax&quot;&gt;Formatting Syntax&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/DokuWiki&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/DokuWiki&quot;&gt;DokuWiki&lt;/a&gt; supports some simple markup language, which tries to make the datafiles to be as readable as possible. This page contains all possible syntax you may use when editing the pages. Simply have a look at the source of this page by pressing „Edit this page”. If you want to try something, just use the &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=playground:playground&quot; class=&quot;wikilink1&quot; title=&quot;playground:playground&quot; data-wiki-id=&quot;playground:playground&quot;&gt;playground&lt;/a&gt; page. The simpler markup is easily accessible via &lt;a href=&quot;https://www.dokuwiki.org/toolbar&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/toolbar&quot;&gt;quickbuttons&lt;/a&gt;, too.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Formatting Syntax&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;formatting_syntax&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-472&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;basic_text_formatting&quot;&gt;Basic Text Formatting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki supports &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, &lt;em class=&quot;u&quot;&gt;underlined&lt;/em&gt; and &lt;code&gt;monospaced&lt;/code&gt; texts. Of course you can &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;&lt;em&gt;&lt;code&gt;combine&lt;/code&gt;&lt;/em&gt;&lt;/em&gt;&lt;/strong&gt; all these.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DokuWiki supports **bold**, //italic//, __underlined__ and &amp;#039;&amp;#039;monospaced&amp;#039;&amp;#039; texts.
Of course you can **__//&amp;#039;&amp;#039;combine&amp;#039;&amp;#039;//__** all these.&lt;/pre&gt;

&lt;p&gt;
You can use &lt;sub&gt;subscript&lt;/sub&gt; and &lt;sup&gt;superscript&lt;/sup&gt;, too.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can use &amp;lt;sub&amp;gt;subscript&amp;lt;/sub&amp;gt; and &amp;lt;sup&amp;gt;superscript&amp;lt;/sup&amp;gt;, too.&lt;/pre&gt;

&lt;p&gt;
You can mark something as &lt;del&gt;deleted&lt;/del&gt; as well.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can mark something as &amp;lt;del&amp;gt;deleted&amp;lt;/del&amp;gt; as well.&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Paragraphs&lt;/strong&gt; are created from blank lines. If you want to &lt;strong&gt;force a newline&lt;/strong&gt; without a paragraph, you can use two backslashes followed by a whitespace or the end of line.
&lt;/p&gt;

&lt;p&gt;
This is some text with some linebreaks&lt;br/&gt;
Note that the
two backslashes are only recognized at the end of a line&lt;br/&gt;

or followed by&lt;br/&gt;
a whitespace \\this happens without it.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;This is some text with some linebreaks\\ Note that the
two backslashes are only recognized at the end of a line\\
or followed by\\ a whitespace \\this happens without it.&lt;/pre&gt;

&lt;p&gt;
You should use forced newlines only if really needed.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Basic Text Formatting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;basic_text_formatting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;473-1609&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;links&quot;&gt;Links&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki supports multiple ways of creating links.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Links&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;links&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1610-1680&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;external&quot;&gt;External&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
External links are recognized automagically: &lt;a href=&quot;http://www.google.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.google.com&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.google.com&lt;/a&gt; or simply &lt;a href=&quot;http://www.google.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.google.com&quot; rel=&quot;ugc nofollow&quot;&gt;www.google.com&lt;/a&gt; - You can set the link text as well: &lt;a href=&quot;http://www.google.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.google.com&quot; rel=&quot;ugc nofollow&quot;&gt;This Link points to google&lt;/a&gt;. Email addresses like this one: &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&lt;/a&gt; are recognized, too.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DokuWiki supports multiple ways of creating links. External links are recognized
automagically: http://www.google.com or simply www.google.com - You can set
link text as well: [[http://www.google.com|This Link points to google]]. Email
addresses like this one: &amp;lt;andi@splitbrain.org&amp;gt; are recognized, too.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;External&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;external&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1681-2271&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;internal&quot;&gt;Internal&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Internal links are created by using square brackets. You can either just give a &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:pagename&quot; class=&quot;wikilink2&quot; title=&quot;wiki:pagename&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:pagename&quot;&gt;pagename&lt;/a&gt; or use an additional &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:pagename&quot; class=&quot;wikilink2&quot; title=&quot;wiki:pagename&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:pagename&quot;&gt;link text&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Internal links are created by using square brackets. You can either just give
a [[pagename]] or use an additional [[pagename|link text]].&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/pagename&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/pagename&quot;&gt;Wiki pagenames&lt;/a&gt; are converted to lowercase automatically, special characters are not allowed.
&lt;/p&gt;

&lt;p&gt;
You can use &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=some:namespaces&quot; class=&quot;wikilink2&quot; title=&quot;some:namespaces&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;some:namespaces&quot;&gt;namespaces&lt;/a&gt; by using a colon in the pagename.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can use [[some:namespaces]] by using a colon in the pagename.&lt;/pre&gt;

&lt;p&gt;
For details about namespaces see &lt;a href=&quot;https://www.dokuwiki.org/namespaces&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/namespaces&quot;&gt;namespaces&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Linking to a specific section is possible, too. Just add the section name behind a hash character as known from &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;. This links to &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:syntax#internal&quot; class=&quot;wikilink1&quot; title=&quot;wiki:syntax&quot; data-wiki-id=&quot;wiki:syntax&quot;&gt;this Section&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;This links to [[syntax#internal|this Section]].&lt;/pre&gt;

&lt;p&gt;
Notes:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Links to &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:syntax&quot; class=&quot;wikilink1&quot; title=&quot;wiki:syntax&quot; data-wiki-id=&quot;wiki:syntax&quot;&gt;existing pages&lt;/a&gt; are shown in a different style from &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:nonexisting&quot; class=&quot;wikilink2&quot; title=&quot;wiki:nonexisting&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:nonexisting&quot;&gt;nonexisting&lt;/a&gt; ones.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DokuWiki does not use &lt;a href=&quot;https://en.wikipedia.org/wiki/CamelCase&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/CamelCase&quot;&gt;CamelCase&lt;/a&gt; to automatically create links by default, but this behavior can be enabled in the &lt;a href=&quot;https://www.dokuwiki.org/config&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/config&quot;&gt;config&lt;/a&gt; file. Hint: If DokuWiki is a link, then it&amp;#039;s enabled.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; When a section&amp;#039;s heading is changed, its bookmark changes, too. So don&amp;#039;t rely on section linking too much.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Internal&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;internal&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2272-3506&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;interwiki&quot;&gt;Interwiki&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki supports &lt;a href=&quot;https://www.dokuwiki.org/Interwiki&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/Interwiki&quot;&gt;Interwiki&lt;/a&gt; links. These are quick links to other Wikis. For example this is a link to Wikipedia&amp;#039;s page about Wikis: &lt;a href=&quot;https://en.wikipedia.org/wiki/Wiki&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Wiki&quot;&gt;Wiki&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DokuWiki supports [[doku&amp;gt;Interwiki]] links. These are quick links to other Wikis.
For example this is a link to Wikipedia&amp;#039;s page about Wikis: [[wp&amp;gt;Wiki]].&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Interwiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;interwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3507-3843&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;windows_shares&quot;&gt;Windows Shares&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Windows shares like &lt;a href=&quot;file://///server/share&quot; class=&quot;windows&quot; title=&quot;\\server\share&quot;&gt;this&lt;/a&gt; are recognized, too. Please note that these only make sense in a homogeneous user group like a corporate &lt;a href=&quot;https://en.wikipedia.org/wiki/Intranet&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Intranet&quot;&gt;Intranet&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Windows Shares like [[\\server\share|this]] are recognized, too.&lt;/pre&gt;

&lt;p&gt;
Notes:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; For security reasons direct browsing of windows shares only works in Microsoft Internet Explorer per default (and only in the „local zone”).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; For Mozilla and Firefox it can be enabled through different workaround mentioned in the &lt;a href=&quot;http://kb.mozillazine.org/Links_to_local_pages_do_not_work&quot; class=&quot;urlextern&quot; title=&quot;http://kb.mozillazine.org/Links_to_local_pages_do_not_work&quot; rel=&quot;ugc nofollow&quot;&gt;Mozilla Knowledge Base&lt;/a&gt;. However, there will still be a JavaScript warning about trying to open a Windows Share. To remove this warning (for all users), put the following line in &lt;code&gt;conf/lang/en/lang.php&lt;/code&gt; (more details at &lt;a href=&quot;https://www.dokuwiki.org/localization#changing_some_localized_texts_and_strings_in_your_installation&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/localization#changing_some_localized_texts_and_strings_in_your_installation&quot;&gt;localization&lt;/a&gt;): &lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wiki.baszarek.pl/doku.php?do=export_code&amp;amp;id=wiki:syntax&amp;amp;codeblock=0&quot; title=&quot;Pobierz zrzut&quot; class=&quot;mediafile mf_php&quot;&gt;conf/lang/en/lang.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code&quot;&gt;&amp;lt;?php
/**
 * Customization of the english language file
 * Copy only the strings that needs to be modified
 */
$lang[&amp;#039;js&amp;#039;][&amp;#039;nosmblinks&amp;#039;] = &amp;#039;&amp;#039;;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Windows Shares&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;windows_shares&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3844-4916&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;image_links&quot;&gt;Image Links&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
You can also use an image to link to another internal or external page by combining the syntax for links and &lt;a href=&quot;#images_and_other_files&quot; title=&quot;wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;images&lt;/a&gt; (see below) like this:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[[http://php.net|{{wiki:dokuwiki-128.png}}]]&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;http://php.net&quot; class=&quot;media&quot; title=&quot;http://php.net&quot; rel=&quot;ugc nofollow&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Please note: The image formatting is the only formatting syntax accepted in link names.
&lt;/p&gt;

&lt;p&gt;
The whole &lt;a href=&quot;#images_and_other_files&quot; title=&quot;wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;image&lt;/a&gt; and &lt;a href=&quot;#links&quot; title=&quot;wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;link&lt;/a&gt; syntax is supported (including image resizing, internal and external images and URLs and interwiki links).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Image Links&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;image_links&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;4917-5462&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can add footnotes &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; by using double parentheses.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can add footnotes ((This is a footnote)) by using double parentheses.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Footnotes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;footnotes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;5463-5637&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;sectioning&quot;&gt;Sectioning&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can use up to five different levels of headlines to structure your content. If you have more than three headlines, a table of contents is generated automatically – this can be disabled by including the string &lt;code&gt;~~NOTOC~~&lt;/code&gt; in the document.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sectioning&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sectioning&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;5638-5924&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;headline_level_3&quot;&gt;Headline Level 3&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;headline_level_4&quot;&gt;Headline Level 4&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;/div&gt;

&lt;h5 id=&quot;headline_level_5&quot;&gt;Headline Level 5&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;==== Headline Level 3 ====
=== Headline Level 4 ===
== Headline Level 5 ==&lt;/pre&gt;

&lt;p&gt;
By using four or more dashes, you can make a horizontal line:
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Headline Level 3&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;headline_level_3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;5925-6151&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;media_files&quot;&gt;Media Files&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can include external and internal &lt;a href=&quot;https://www.dokuwiki.org/images&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/images&quot;&gt;images, videos and audio files&lt;/a&gt; with curly brackets. Optionally you can specify the size of them.
&lt;/p&gt;

&lt;p&gt;
Real size:                        &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Resize to given width:            &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=50&amp;amp;tok=28c14e&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;50&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Resize to given width and height&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt;: &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;h=50&amp;amp;tok=a58608&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;50&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Resized external image:           &lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?tok=6d7a34&amp;amp;media=https%3A%2F%2Fwww.php.net%2Fimages%2Fphp.gif&quot; class=&quot;media&quot; title=&quot;https://www.php.net/images/php.gif&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=200&amp;amp;h=50&amp;amp;tok=698c35&amp;amp;media=https%3A%2F%2Fwww.php.net%2Fimages%2Fphp.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;50&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Real size:                        {{wiki:dokuwiki-128.png}}
Resize to given width:            {{wiki:dokuwiki-128.png?50}}
Resize to given width and height: {{wiki:dokuwiki-128.png?200x50}}
Resized external image:           {{https://www.php.net/images/php.gif?200x50}}&lt;/pre&gt;

&lt;p&gt;
By using left or right whitespaces you can choose the alignment.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;mediaright&quot; align=&quot;right&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{ wiki:dokuwiki-128.png}}
{{wiki:dokuwiki-128.png }}
{{ wiki:dokuwiki-128.png }}&lt;/pre&gt;

&lt;p&gt;
Of course, you can add a title (displayed as a tooltip by most browsers), too.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; title=&quot;This is the caption&quot; alt=&quot;This is the caption&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{ wiki:dokuwiki-128.png |This is the caption}}&lt;/pre&gt;

&lt;p&gt;
For linking an image to another page see &lt;a href=&quot;#image_links&quot; title=&quot;wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;Image Links&lt;/a&gt; above.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Media Files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;media_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;6152-7518&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;supported_media_formats&quot;&gt;Supported Media Formats&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki can embed the following media formats directly.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit14&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Image &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;gif&lt;/code&gt;, &lt;code&gt;jpg&lt;/code&gt;, &lt;code&gt;png&lt;/code&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Video &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;code&gt;webm&lt;/code&gt;, &lt;code&gt;ogv&lt;/code&gt;, &lt;code&gt;mp4&lt;/code&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Audio &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;ogg&lt;/code&gt;, &lt;code&gt;mp3&lt;/code&gt;, &lt;code&gt;wav&lt;/code&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Flash &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;swf&lt;/code&gt;                    &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;7612-7767&amp;quot;} --&gt;
&lt;p&gt;
If you specify a filename that is not a supported media format, then it will be displayed as a link instead.
&lt;/p&gt;

&lt;p&gt;
By adding &lt;code&gt;?linkonly&lt;/code&gt; you provide a link to the media without displaying it inline
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{wiki:dokuwiki-128.png?linkonly}}&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;media mediafile mf_png&quot; title=&quot;wiki:dokuwiki-128.png (27.2 KB)&quot;&gt;dokuwiki-128.png&lt;/a&gt; This is just a link to the image.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Supported Media Formats&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;supported_media_formats&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;7519-8072&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;fallback_formats&quot;&gt;Fallback Formats&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Unfortunately not all browsers understand all video and audio formats. To mitigate the problem, you can upload your file in different formats for maximum browser compatibility.
&lt;/p&gt;

&lt;p&gt;
For example consider this embedded mp4 video:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{video.mp4|A funny video}}&lt;/pre&gt;

&lt;p&gt;
When you upload a &lt;code&gt;video.webm&lt;/code&gt; and &lt;code&gt;video.ogv&lt;/code&gt; next to the referenced &lt;code&gt;video.mp4&lt;/code&gt;, DokuWiki will automatically add them as alternatives so that one of the three files is understood by your browser.
&lt;/p&gt;

&lt;p&gt;
Additionally DokuWiki supports a „poster” image which will be shown before the video has started. That image needs to have the same filename as the video and be either a jpg or png file. In the example above a &lt;code&gt;video.jpg&lt;/code&gt; file would work.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Fallback Formats&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fallback_formats&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;8073-8803&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;lists&quot;&gt;Lists&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Dokuwiki supports ordered and unordered lists. To create a list item, indent your text by two spaces and use a &lt;code&gt;*&lt;/code&gt; for unordered lists or a &lt;code&gt;-&lt;/code&gt; for ordered ones.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; This is a list&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; The second item&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; You may have different levels&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Another item&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The same list but ordered&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Another item&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Just use indention for deeper levels&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; That&amp;#039;s it&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;code&quot;&gt;  * This is a list
  * The second item
    * You may have different levels
  * Another item

  - The same list but ordered
  - Another item
    - Just use indention for deeper levels
  - That&amp;#039;s it&lt;/pre&gt;

&lt;p&gt;
Also take a look at the &lt;a href=&quot;https://www.dokuwiki.org/faq%3Alists&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/faq%3Alists&quot;&gt;FAQ on list items&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lists&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lists&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;8804-9463&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;text_conversions&quot;&gt;Text Conversions&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki can convert certain pre-defined characters or strings into images or other text or &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;.
&lt;/p&gt;

&lt;p&gt;
The text to image conversion is mainly done for smileys. And the text to &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; conversion is used for typography replacements, but can be configured to use other &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; as well.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Text Conversions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;text_conversions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;9464-9768&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit18&quot; id=&quot;text_to_image_conversions&quot;&gt;Text to Image Conversions&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki converts commonly used &lt;a href=&quot;https://en.wikipedia.org/wiki/emoticon&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/emoticon&quot;&gt;emoticon&lt;/a&gt;s to their graphical equivalents. Those &lt;a href=&quot;https://www.dokuwiki.org/Smileys&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/Smileys&quot;&gt;Smileys&lt;/a&gt; and other images can be configured and extended. Here is an overview of Smileys included in DokuWiki:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/cool.svg&quot; class=&quot;icon smiley&quot; alt=&quot;8-)&quot; /&gt;   8-)  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/eek.svg&quot; class=&quot;icon smiley&quot; alt=&quot;8-O&quot; /&gt;   8-O  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/sad.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-(&quot; /&gt;   :-(  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/smile.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-)&quot; /&gt;   :-)  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/smile2.svg&quot; class=&quot;icon smiley&quot; alt=&quot;=)&quot; /&gt;    =)   &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/doubt.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-/&quot; /&gt;   :-/  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/doubt2.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-\&quot; /&gt;   :-\  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/confused.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-?&quot; /&gt;   :-?  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/biggrin.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-D&quot; /&gt;   :-D  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/razz.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-P&quot; /&gt;   :-P  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/surprised.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-O&quot; /&gt;   :-O  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/silenced.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-X&quot; /&gt;   :-X  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/neutral.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-|&quot; /&gt;   :-|  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/wink.svg&quot; class=&quot;icon smiley&quot; alt=&quot;;-)&quot; /&gt;   ;-)  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/fun.svg&quot; class=&quot;icon smiley&quot; alt=&quot;^_^&quot; /&gt;   ^_^  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/facepalm.svg&quot; class=&quot;icon smiley&quot; alt=&quot;m(&quot; /&gt;    m(   &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/question.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:?:&quot; /&gt;   :?:  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;   :!:  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/lol.svg&quot; class=&quot;icon smiley&quot; alt=&quot;LOL&quot; /&gt;   LOL  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;   FIXME &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wiki.baszarek.pl/lib/images/smileys/deleteme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;DELETEME&quot; /&gt;  DELETEME &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Text to Image Conversions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;text_to_image_conversions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;9769-10444&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit19&quot; id=&quot;text_to_html_conversions&quot;&gt;Text to HTML Conversions&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Typography: &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; can convert simple text characters to their typographically correct entities. Here is an example of recognized characters.
&lt;/p&gt;

&lt;p&gt;
→ ← ↔ ⇒ ⇐ ⇔ » « – — 640&amp;times;480 © ™ ®
„He thought &amp;#039;It&amp;#039;s a man&amp;#039;s world&amp;#039;…”
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;-&amp;gt; &amp;lt;- &amp;lt;-&amp;gt; =&amp;gt; &amp;lt;= &amp;lt;=&amp;gt; &amp;gt;&amp;gt; &amp;lt;&amp;lt; -- --- 640x480 (c) (tm) (r)
&amp;quot;He thought &amp;#039;It&amp;#039;s a man&amp;#039;s world&amp;#039;...&amp;quot;&lt;/pre&gt;

&lt;p&gt;
The same can be done to produce any kind of &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;, it just needs to be added to the &lt;a href=&quot;https://www.dokuwiki.org/entities&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/entities&quot;&gt;pattern file&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
There are three exceptions which do not come from that pattern file: multiplication entity (640&amp;times;480), &amp;#039;single&amp;#039; and „double quotes”. They can be turned off through a &lt;a href=&quot;https://www.dokuwiki.org/config%3Atypography&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/config%3Atypography&quot;&gt;config option&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Text to HTML Conversions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;text_to_html_conversions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;10445-11152&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;quoting&quot;&gt;Quoting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Some times you want to mark some text to show it&amp;#039;s a reply or comment. You can use the following syntax:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;I think we should do it

&amp;gt; No we shouldn&amp;#039;t

&amp;gt;&amp;gt; Well, I say we should

&amp;gt; Really?

&amp;gt;&amp;gt; Yes!

&amp;gt;&amp;gt;&amp;gt; Then lets do it!&lt;/pre&gt;

&lt;p&gt;
I think we should do it
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 No we shouldn&amp;#039;t&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Well, I say we should&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Really?&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Yes!&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Then lets do it!&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Quoting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;quoting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;11153-11518&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit21&quot; id=&quot;tables&quot;&gt;Tables&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki supports a simple syntax to create tables.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit22&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 1      &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Heading 2       &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Heading 3          &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 1 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 1 Col 2     &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 1 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 2 Col 1    &lt;/td&gt;&lt;td class=&quot;col1&quot; colspan=&quot;2&quot;&gt; some colspan (note the double pipe) &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 3 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 3 Col 2     &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 3 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;11592-11823&amp;quot;} --&gt;
&lt;p&gt;
Table rows have to start and end with a &lt;code&gt;|&lt;/code&gt; for normal rows or a &lt;code&gt;^&lt;/code&gt; for headers.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;^ Heading 1      ^ Heading 2       ^ Heading 3          ^
| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
| Row 2 Col 1    | some colspan (note the double pipe) ||
| Row 3 Col 1    | Row 3 Col 2     | Row 3 Col 3        |&lt;/pre&gt;

&lt;p&gt;
To connect cells horizontally, just make the next cell completely empty as shown above. Be sure to have always the same amount of cell separators!
&lt;/p&gt;

&lt;p&gt;
Vertical tableheaders are possible, too.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit23&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;              &lt;/td&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Heading 1            &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Heading 2          &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 3    &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 1 Col 2          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 1 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 4    &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; no colspan this time &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;                    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 5    &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 2 Col 2          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 2 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;12343-12586&amp;quot;} --&gt;
&lt;p&gt;
As you can see, it&amp;#039;s the cell separator before a cell which decides about the formatting:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;|              ^ Heading 1            ^ Heading 2          ^
^ Heading 3    | Row 1 Col 2          | Row 1 Col 3        |
^ Heading 4    | no colspan this time |                    |
^ Heading 5    | Row 2 Col 2          | Row 2 Col 3        |&lt;/pre&gt;

&lt;p&gt;
You can have rowspans (vertically connected cells) by adding &lt;code&gt;:::&lt;/code&gt; into the cells below the one to which they should connect.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit24&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 1      &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Heading 2                  &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Heading 3          &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 1 Col 1    &lt;/td&gt;&lt;td class=&quot;col1&quot; rowspan=&quot;3&quot;&gt; this cell spans vertically &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 1 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 2 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 2 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 3 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 2 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;13065-13340&amp;quot;} --&gt;
&lt;p&gt;
Apart from the rowspan syntax those cells should not contain anything else.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;^ Heading 1      ^ Heading 2                  ^ Heading 3          ^
| Row 1 Col 1    | this cell spans vertically | Row 1 Col 3        |
| Row 2 Col 1    | :::                        | Row 2 Col 3        |
| Row 3 Col 1    | :::                        | Row 2 Col 3        |&lt;/pre&gt;

&lt;p&gt;
You can align the table contents, too. Just add at least two whitespaces at the opposite end of your text: Add two spaces on the left to align right, two spaces on the right to align left and two spaces at least at both ends for centered text.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit25&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 centeralign&quot; colspan=&quot;3&quot;&gt;           Table with alignment           &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;         right&lt;/td&gt;&lt;td class=&quot;col1 centeralign&quot;&gt;    center    &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;left          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;left          &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;         right&lt;/td&gt;&lt;td class=&quot;col2 centeralign&quot;&gt;    center    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; xxxxxxxxxxxx &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; xxxxxxxxxxxx &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; xxxxxxxxxxxx &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table4&amp;quot;,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;13949-14136&amp;quot;} --&gt;
&lt;p&gt;
This is how it looks in the source:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;^           Table with alignment           ^^^
|         right|    center    |left          |
|left          |         right|    center    |
| xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx |&lt;/pre&gt;

&lt;p&gt;
Note: Vertical alignment is not supported.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Tables&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tables&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;11519-14415&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit26&quot; id=&quot;no_formatting&quot;&gt;No Formatting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
If you need to display text exactly like it is typed (without any formatting), enclose the area either with &lt;code&gt;&amp;lt;nowiki&amp;gt;&lt;/code&gt; tags or even simpler, with double percent signs &lt;code&gt;%%&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;

This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it.

The same is true for //__this__ text// with a smiley ;-).
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;nowiki&amp;gt;
This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it.
&amp;lt;/nowiki&amp;gt;
The same is true for %%//__this__ text// with a smiley ;-)%%.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;No Formatting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;no_formatting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;14416-15071&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit27&quot; id=&quot;code_blocks&quot;&gt;Code Blocks&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can include code blocks into your documents by either indenting them by at least two spaces (like used for the previous examples) or by using the tags &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;file&amp;gt;&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;This is text is indented by two spaces.&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;This is preformatted code all spaces are preserved: like              &amp;lt;-this&lt;/pre&gt;
&lt;pre class=&quot;file&quot;&gt;This is pretty much the same, but you could use it to show that you quoted a file.&lt;/pre&gt;

&lt;p&gt;
Those blocks were created by this source:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  This is text is indented by two spaces.&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;code&amp;gt;
This is preformatted code all spaces are preserved: like              &amp;lt;-this
&amp;lt;/code&amp;gt;&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;file&amp;gt;
This is pretty much the same, but you could use it to show that you quoted a file.
&amp;lt;/file&amp;gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Code Blocks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;code_blocks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;15072-15813&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit28&quot; id=&quot;syntax_highlighting&quot;&gt;Syntax Highlighting&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; can highlight sourcecode, which makes it easier to read. It uses the &lt;a href=&quot;http://qbnz.com/highlighter/&quot; class=&quot;urlextern&quot; title=&quot;http://qbnz.com/highlighter/&quot; rel=&quot;ugc nofollow&quot;&gt;GeSHi&lt;/a&gt; Generic Syntax Highlighter – so any language supported by GeSHi is supported. The syntax uses the same code and file blocks described in the previous section, but this time the name of the language syntax to be highlighted is included inside the tag, e.g. &lt;code&gt;&amp;lt;code java&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;file java&amp;gt;&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code java&quot;&gt;&lt;span class=&quot;co3&quot;&gt;/**
 * The HelloWorldApp class implements an application that
 * simply displays &amp;quot;Hello World!&amp;quot; to the standard output.
 */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; HelloWorldApp &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.google.com/search?hl=en&amp;amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; args&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://www.google.com/search?hl=en&amp;amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span class=&quot;me1&quot;&gt;out&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Hello World!&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//Display the string.&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
The following language strings are currently recognized: &lt;em&gt;4cs 6502acme 6502kickass 6502tasm 68000devpac abap actionscript3 actionscript ada aimms algol68 apache applescript apt_sources arm asm asp asymptote autoconf autohotkey autoit avisynth awk bascomavr bash basic4gl batch bf biblatex bibtex blitzbasic bnf boo caddcl cadlisp ceylon cfdg cfm chaiscript chapel cil c_loadrunner clojure c_mac cmake cobol coffeescript c cpp cpp-qt cpp-winapi csharp css cuesheet c_winapi dart dcl dcpu16 dcs delphi diff div dos dot d ecmascript eiffel email epc e erlang euphoria ezt f1 falcon fo fortran freebasic freeswitch fsharp gambas gdb genero genie gettext glsl gml gnuplot go groovy gwbasic haskell haxe hicest hq9plus html html4strict html5 icon idl ini inno intercal io ispfpanel java5 java javascript jcl j jquery julia kixtart klonec klonecpp kotlin latex lb ldif lisp llvm locobasic logtalk lolcode lotusformulas lotusscript lscript lsl2 lua m68k magiksf make mapbasic mathematica matlab mercury metapost mirc mk-61 mmix modula2 modula3 mpasm mxml mysql nagios netrexx newlisp nginx nimrod nsis oberon2 objc objeck ocaml-brief ocaml octave oobas oorexx oracle11 oracle8 oxygene oz parasail parigp pascal pcre perl6 perl per pf phix php-brief php pic16 pike pixelbender pli plsql postgresql postscript povray powerbuilder powershell proftpd progress prolog properties providex purebasic pycon pys60 python qbasic qml q racket rails rbs rebol reg rexx robots roff rpmspec rsplus ruby rust sas sass scala scheme scilab scl sdlbasic smalltalk smarty spark sparql sql sshconfig standardml stonescript swift systemverilog tclegg tcl teraterm texgraph text thinbasic tsql twig typoscript unicon upc urbi uscript vala vbnet vb vbscript vedit verilog vhdl vim visualfoxpro visualprolog whitespace whois winbatch wolfram xbasic xml xojo xorg_conf xpp yaml z80 zxbasic&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
There are additional &lt;a href=&quot;https://www.dokuwiki.org/syntax_highlighting&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/syntax_highlighting&quot;&gt;advanced options&lt;/a&gt; available for syntax highlighting, such as highlighting lines or adding line numbers.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Syntax Highlighting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;syntax_highlighting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;15814-18599&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit29&quot; id=&quot;downloadable_code_blocks&quot;&gt;Downloadable Code Blocks&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
When you use the &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;file&amp;gt;&lt;/code&gt; syntax as above, you might want to make the shown code available for download as well. You can do this by specifying a file name after language code like this:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;file php myexample.php&amp;gt;
&amp;lt;?php echo &amp;quot;hello world!&amp;quot;; ?&amp;gt;
&amp;lt;/file&amp;gt;&lt;/pre&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wiki.baszarek.pl/doku.php?do=export_code&amp;amp;id=wiki:syntax&amp;amp;codeblock=8&quot; title=&quot;Pobierz zrzut&quot; class=&quot;mediafile mf_php&quot;&gt;myexample.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;hello world!&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
If you don&amp;#039;t want any highlighting but want a downloadable file, specify a dash (&lt;code&gt;-&lt;/code&gt;) as the language code: &lt;code&gt;&amp;lt;code - myfile.foo&amp;gt;&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Downloadable Code Blocks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;downloadable_code_blocks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;18600-19129&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit30&quot; id=&quot;rss_atom_feed_aggregation&quot;&gt;RSS/ATOM Feed Aggregation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; can integrate data from external XML feeds. For parsing the XML feeds, &lt;a href=&quot;http://simplepie.org/&quot; class=&quot;urlextern&quot; title=&quot;http://simplepie.org/&quot; rel=&quot;ugc nofollow&quot;&gt;SimplePie&lt;/a&gt; is used. All formats understood by SimplePie can be used in DokuWiki as well. You can influence the rendering by multiple additional space separated parameters:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit31&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Parameter  &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Description &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; any number &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; will be used as maximum number items to show, defaults to 8 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; reverse    &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; display the last items in the feed first &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; author     &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; show item authors names &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; date       &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; show item dates &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; description&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; show the item description. All &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; tags will be stripped &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; nosort     &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; do not sort the items in the feed &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;em&gt;n&lt;/em&gt;[dhm] &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; refresh period, where d=days, h=hours, m=minutes. (e.g. 12h = 12 hours). &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table5&amp;quot;,&amp;quot;secid&amp;quot;:31,&amp;quot;range&amp;quot;:&amp;quot;19450-19903&amp;quot;} --&gt;
&lt;p&gt;
The refresh period defaults to 4 hours. Any value below 10 minutes will be treated as 10 minutes. &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; will generally try to supply a cached version of a page, obviously this is inappropriate when the page contains dynamic external content. The parameter tells &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; to re-render the page if it is more than &lt;em&gt;refresh period&lt;/em&gt; since the page was last rendered.
&lt;/p&gt;

&lt;p&gt;
By default the feed will be sorted by date, newest items first. You can sort it by oldest first using the &lt;code&gt;reverse&lt;/code&gt; parameter, or display the feed as is with &lt;code&gt;nosort&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Example:&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{rss&amp;gt;http://slashdot.org/index.rss 5 author date 1h }}&lt;/pre&gt;
&lt;ul class=&quot;rss&quot;&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://tech.slashdot.org/story/26/04/06/2242242/china-flies-worlds-first-megawatt-class-hydrogen-turboprop-engine?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://tech.slashdot.org/story/26/04/06/2242242/china-flies-worlds-first-megawatt-class-hydrogen-turboprop-engine?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;China Flies World&amp;#039;s First Megawatt-Class Hydrogen Turboprop Engine&lt;/a&gt; przez BeauHD (2026/04/07 09:00)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://yro.slashdot.org/story/26/04/06/2214217/new-jersey-cannot-regulate-kalshis-prediction-market-us-appeals-court-rules?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://yro.slashdot.org/story/26/04/06/2214217/new-jersey-cannot-regulate-kalshis-prediction-market-us-appeals-court-rules?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;New Jersey Cannot Regulate Kalshi&amp;#039;s Prediction Market, US Appeals Court Rules&lt;/a&gt; przez BeauHD (2026/04/07 05:30)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://yro.slashdot.org/story/26/04/06/2154206/openai-calls-for-robot-taxes-public-wealth-fund-and-4-day-workweek-to-tackle-ai-disruption?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://yro.slashdot.org/story/26/04/06/2154206/openai-calls-for-robot-taxes-public-wealth-fund-and-4-day-workweek-to-tackle-ai-disruption?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;OpenAI Calls For Robot Taxes, Public Wealth Fund, and 4-Day Workweek To Tackle AI Disruption&lt;/a&gt; przez BeauHD (2026/04/07 01:00)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://mobile.slashdot.org/story/26/04/06/2142225/teardown-of-unreleased-lg-rollable-shows-why-rollable-phones-arent-a-thing?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://mobile.slashdot.org/story/26/04/06/2142225/teardown-of-unreleased-lg-rollable-shows-why-rollable-phones-arent-a-thing?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;Teardown of Unreleased LG Rollable Shows Why Rollable Phones Aren&amp;#039;t a Thing&lt;/a&gt; przez BeauHD (2026/04/07 00:00)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://news.slashdot.org/story/26/04/06/1730207/ap-offers-buyouts-as-part-of-pivot-away-from-newspaper-journalism?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://news.slashdot.org/story/26/04/06/1730207/ap-offers-buyouts-as-part-of-pivot-away-from-newspaper-journalism?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;AP Offers Buyouts As Part of Pivot Away From Newspaper Journalism&lt;/a&gt; przez BeauHD (2026/04/06 23:00)&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RSS\/ATOM Feed Aggregation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rss_atom_feed_aggregation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;19130-20595&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit32&quot; id=&quot;control_macros&quot;&gt;Control Macros&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Some syntax influences how DokuWiki renders a page without creating any output it self. The following control macros are availble:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit33&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Macro           &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Description &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ~~NOTOC~~   &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; If this macro is found on the page, no table of contents will be created &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ~~NOCACHE~~ &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DokuWiki caches all output by default. Sometimes this might not be wanted (eg. when the &amp;lt;php&amp;gt; syntax above is used), adding this macro will force DokuWiki to rerender a page on every call &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table6&amp;quot;,&amp;quot;secid&amp;quot;:33,&amp;quot;range&amp;quot;:&amp;quot;20756-21098&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Control Macros&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;control_macros&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:32,&amp;quot;range&amp;quot;:&amp;quot;20596-21099&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit34&quot; id=&quot;syntax_plugins&quot;&gt;Syntax Plugins&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki&amp;#039;s syntax can be extended by &lt;a href=&quot;https://www.dokuwiki.org/plugins&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/plugins&quot;&gt;Plugins&lt;/a&gt;. How the installed plugins are used is described on their appropriate description pages. The following syntax plugins are available in this particular DokuWiki installation:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://dokuwiki.org/plugin:info&quot; class=&quot;urlextern&quot; title=&quot;http://dokuwiki.org/plugin:info&quot; rel=&quot;ugc nofollow&quot;&gt;Info Plugin&lt;/a&gt; &lt;em&gt;2020-06-04&lt;/em&gt; przez &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Displays information about various DokuWiki internals&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Syntax Plugins&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;syntax_plugins&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:34,&amp;quot;range&amp;quot;:&amp;quot;21100-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;This is a footnote&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;when the aspect ratio of the given width and height doesn&amp;#039;t match that of the image, it will be cropped to the new ratio before resizing&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:syoutube_dl&amp;rev=1767508994">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-04T06:43:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>syoutube_dl</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:syoutube_dl&amp;rev=1767508994</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;youtube-dl&quot;&gt;Youtube-dl&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Pobieranie filmu z Youtube, lub podobnego serwisu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;yt-dlp https://www.youtube.com/watch?v=_[śmieszne znaczki]&lt;/pre&gt;

&lt;p&gt;
Przekodowanie filmu do niższej jakości, która nie jest problemem nawet dla starego telefonu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ffmpeg -i film.webm -vf scale=1280:720 -preset slow -crf 18 film.mp4&lt;/pre&gt;

&lt;p&gt;
Przekodowanie wszystkich plików na mp3 o najwyższej możliwej jakości (trzeba potem jeszcze popracować nad nazwami plików; najwyższa jakość jest zdaje się wyższa, niż na YouTubie):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;find . -type f -exec ffmpeg -i {} -ab 320k -map a {}.mp3 \;&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:systemd_resolved&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>systemd_resolved</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:systemd_resolved&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;systemd-resolved&quot;&gt;Systemd-resolved&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Odpowiednik /etc/resolv.conf znajduje się w pliku &lt;em&gt;/etc/systemd/resolved.conf&lt;/em&gt; w sekcji default:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Resolve]
DNS=213.180.128.240
Domains=onet.pl&lt;/pre&gt;

&lt;p&gt;
&lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt; odpowiada linijce nameserver, a Domains odpowiada search z /etc/resolv.conf. Po zmianach należy zrestartować resolved:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# systemctl restart systemd-resolved.service&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:szukanie_hosta_443&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>szukanie_hosta_443</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:szukanie_hosta_443&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;szukanie_hosta_sluchajacego_na_443&quot;&gt;Szukanie hosta słuchającego na 443&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Przy zapomnianym IP oczywiście.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;for i in {1..254} ; do TIMEOUT=4 ; timeout $TIMEOUT telnet 192.168.200.${i} 443 ; done&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:tape_storage&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tape_storage</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:tape_storage&amp;rev=1660815847</link>
        <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;tasma_dat_dlt_na_linuksie&quot;&gt;Taśma DAT/DLT na Linuksie&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Słowniczek mt oraz tar:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit2&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Polecenie                 &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Wyjaśnienie &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ls -la /dev/nst0        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Sprawdzenie, czy istnieje plik urządzenia taśmy    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; mt -f /dev/nst0 status  &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Stan taśmy oraz aktualny &lt;em&gt;File number&lt;/em&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; sudo mt -f /dev/nst0 setblk 65536 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Ustawienie rozmiaru bloku &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; mt -f /dev/nst0 load    &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Wymuszenie załadowania taśmy (powinno odbyć się automatycznie) &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; mt -f /dev/nst0 fsf 1   &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Przewinięcie o jeden &lt;em&gt;File number&lt;/em&gt; do przodu &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; mt -f /dev/nst0 bsfm 1  &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Przewinięcie do początku obecnego &lt;em&gt;File number&lt;/em&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; mt -f /dev/nst0 rewind &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Przewinięcie do początku taśmy &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; tar -b 128 -cvf /dev/nst0 /home/lukasz/dir/ &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Utworzenie archiwum na taśmie, na obecnym numerze pliku &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; tar -b 128 -tvf /dev/nst0 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Pokazanie zawartości archiwum z obecnego numeru pliku &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; tar -b 128 -xvf /dev/nst0 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Rozpakowanie archiwum z obecnego numeru pliku do aktualnego katalogu &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; mt -f /dev/nst0 erase &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Zerowanie taśmy (zajmuje dużo czasu) &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row12&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; mt -f /dev/nst0 eject &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Wyjęcie taśmy z napędu &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row13&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; mt -f /dev/nst0 stsetoptions debug &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Zwiększenie gadatliwości logu &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row14&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; journalctl -f | grep &amp;#039;st0&amp;#039; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Czytanie na bieżąco logów &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;68-1209&amp;quot;} --&gt;
&lt;p&gt;
Scenariusz:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; należy zarchiwizować katalogi /home/lukasz/Dokumenty/battletech/rpg oraz /home/lukasz/Dokumenty/craft na taśmie,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; system to Fedora 33, streamer to (stary model, ale w przypadku nowszych archiwizuje się w ten sam sposób) HP DW022A, kaseta to HP DDS40.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ta\u015bma DAT\/DLT na Linuksie&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tasma_dat_dlt_na_linuksie&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1486&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;przygotowanie_systemu_oraz_magnetofonu&quot;&gt;Przygotowanie systemu oraz magnetofonu.&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Warto dodać swojego użytkownika do grupy &lt;em&gt;tape&lt;/em&gt; i na chwilę się wylogować:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# sudo usermod -aG tape lukasz&lt;/pre&gt;

&lt;p&gt;
Po umieszczeniu taśmy w napędzie:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# ls -la /dev/nst0
crw-rw---- 1 root tape 9, 128 01-12 14:04 /dev/nst0

# mt -f /dev/nst0 status
SCSI 2 tape drive:
File number=0, block number=0, partition=0.
Tape block size 65536 bytes. Density code 0x26 (DDS-4 or QIC-4GB).
Soft error count since last status=0
General status bits on (41010000):
 BOT ONLINE IM_REP_EN&lt;/pre&gt;

&lt;p&gt;
Jeżeli taśma została zakupiona używana, można ją wyzerować, co zajmuje jednak prawie dwie godziny:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mt -f /dev/nst0 erase
# mt -f /dev/nst0 rewind&lt;/pre&gt;

&lt;p&gt;
Ustawienie bloku (może być potrzebne sudo):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# sudo mt -f /dev/nst0 setblk 65536&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Przygotowanie systemu oraz magnetofonu.&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;przygotowanie_systemu_oraz_magnetofonu&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1487-2280&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;zapisanie_katalogu_na_tasmie_i_weryfikacja&quot;&gt;Zapisanie katalogu na taśmie i weryfikacja&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# tar -b 128 -cvf /dev/nst0 /home/lukasz/Dokumenty/battletech/rpg/
tar: Removing leading `/&amp;#039; from member names
/home/lukasz/Dokumenty/battletech/rpg/
/home/lukasz/Dokumenty/battletech/rpg/mapy/
/home/lukasz/Dokumenty/battletech/rpg/mapy/openterrain1.jpg
[...]&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;# tar -b 128 -tvf /dev/nst0
drwxr-xr-x lukasz/lukasz     0 2020-04-12 18:36 home/lukasz/Dokumenty/battletech/rpg/
drwxr-xr-x lukasz/lukasz     0 2020-04-12 18:22 home/lukasz/Dokumenty/battletech/rpg/mapy/
-rw-r--r-- lukasz/lukasz 4299522 2020-04-12 17:44 home/lukasz/Dokumenty/battletech/rpg/mapy/openterrain1.jpg
[...]&lt;/pre&gt;

&lt;p&gt;
Po zapisie pliku taśma będzie ustawiona na następnym &lt;em&gt;file number&lt;/em&gt;. Dla pewności można przewijać taśmą o  100 plików do przodu, zakładając, że na żadnej taśmie nie ma 100 archiwów. Przewinięcie taśmy do przodu i zapisanie kolejnego archiwum:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mt -f /dev/nst0 fsf 100
[komunikat read/write error, ponieważ osiągnięto EOT - End of Tape]
# tar -b 128 -cvf /dev/st0 /home/lukasz/Dokumenty/craft/
tar: Removing leading `/&amp;#039; from member names
/home/lukasz/Dokumenty/craft/
/home/lukasz/Dokumenty/craft/zew_cthulhu.pdf
/home/lukasz/Dokumenty/craft/zapomniane_miasto.pdf
/home/lukasz/Dokumenty/craft/w_gorach_szalenstwa.pdf
[...]&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Zapisanie katalogu na ta\u015bmie i weryfikacja&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zapisanie_katalogu_na_tasmie_i_weryfikacja&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2281-3603&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;rozpakowanie_archiwum_w_celu_weryfikacji&quot;&gt;Rozpakowanie archiwum w celu weryfikacji.&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# tar -b 128 -xvf /dev/nst0
drwxr-xr-x lukasz/lukasz     0 2020-04-12 18:36 home/lukasz/Dokumenty/battletech/rpg/
drwxr-xr-x lukasz/lukasz     0 2020-04-12 18:22 home/lukasz/Dokumenty/battletech/rpg/mapy/
-rw-r--r-- lukasz/lukasz 4299522 2020-04-12 17:44 home/lukasz/Dokumenty/battletech/rpg/mapy/openterrain1.jpg
-rw-r--r-- lukasz/lukasz 4491530 2020-04-11 15:44 home/lukasz/Dokumenty/battletech/rpg/mapy/tortuga_mapa.jpg
[...]&lt;/pre&gt;

&lt;p&gt;
Sztuczka z md5 do sprawdzenia sum kontrolnych plików:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# find home/lukasz/Dokumenty/battletech/rpg/ -type f -print0 | xargs -0 md5sum&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Rozpakowanie archiwum w celu weryfikacji.&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rozpakowanie_archiwum_w_celu_weryfikacji&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3604-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:tar_gpg&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tar_gpg</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:tar_gpg&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;szyfrowane_archiwum&quot;&gt;Szyfrowane archiwum&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Tworzenie szyfrowanego archiwum z zawartością katalogu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# tar -cvz katalog/ | gpg -e -r adres@email.pl -o archiwum.tgz.gpg&lt;/pre&gt;

&lt;p&gt;
Odszyfrowanie:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# gpg -d archiwum.tgz.gpg &amp;gt; archiwum.tgz&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:tar&amp;rev=1708777163">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-24T12:19:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tar</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:tar&amp;rev=1708777163</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;slowniczek_tar_oraz_kompresji&quot;&gt;Słowniczek TAR (oraz kompresji)&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Wersja bardzo skrócona.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;S\u0142owniczek TAR (oraz kompresji)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;slowniczek_tar_oraz_kompresji&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-74&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;najprostsze_kompresowanie_pliku&quot;&gt;Najprostsze kompresowanie pliku:&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;gzip plik
bzip2 plik&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Najprostsze kompresowanie pliku:&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;najprostsze_kompresowanie_pliku&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;75-145&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;pakowanie_oraz_kompresja_katalogow&quot;&gt;Pakowanie oraz kompresja katalogów:&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;tar --exclude-caches -zcvf plik.tar.gz katalog
      |               ||||
      |               |||↳ plik docelowy
      |               ||↳ tryb gadatliwy 
      |               |↳ utwórz nowe archiwum
      |               ↳ kompresja gzip
      ↳ pomija całą zawartość katalogów z sygnaturą (*), oprócz pliku sygnatury&lt;/pre&gt;

&lt;p&gt;
(*) Sygnatura cache to plik o nazwie &lt;em&gt;CACHEDIR.TAG&lt;/em&gt; z zawartością:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Signature: 8a477f597d28d172789f06886806bc55
# Ten katalog nie jest istotny w kopii zapasowej.
# Aplikacja odtworzy jego zawartosc po uruchomieniu.
# Lukasz 24.02.2024
#&lt;/pre&gt;

&lt;p&gt;
Dla tar-a jest ważna tylko pierwsza linijka. Komentarz poniżej jest opcjonalny, ale wskazany.
&lt;/p&gt;

&lt;p&gt;
Kompresja bzip2:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar -cvjSf archiwum.tar.bz2 katalog&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pakowanie oraz kompresja katalog\u00f3w:&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pakowanie_oraz_kompresja_katalogow&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;146-956&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;kompresowanie_zrzutow_baz_danych&quot;&gt;Kompresowanie zrzutów baz danych&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;mysqldump nazwabazy | bzip2 &amp;gt; mysql_nazwabazy-$(date +%F).db.bz2
pg_dump -U postgres nazwabazy | /usr/bin/bzip2 &amp;gt; postgres_nazwabazy-$(date +%F).db.bz2&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Kompresowanie zrzut\u00f3w baz danych&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kompresowanie_zrzutow_baz_danych&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;957-1159&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;podglad_zawartosci_archiwum&quot;&gt;Podgląd zawartości archiwum&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;tar -tvf archiwum.tar.gz&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Podgl\u0105d zawarto\u015bci archiwum&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;podglad_zawartosci_archiwum&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1160-1228&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;rozpakowanie_zawartosci_archiwum&quot;&gt;Rozpakowanie zawartości archiwum&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;tar -xvf archiwum.tar.gz&lt;/pre&gt;

&lt;p&gt;
Przykładowe, dodatkowe opcje do rozpakowania:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; –keep-old-files - nie nadpisuje plików&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; –keep-newer-files - nie nadpisuje plików, jeżeli te z archiwum są starsze&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; –preserve-permissions - zachowuje uprawnienia do plików, zapisane w archiwum&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;

&lt;p&gt;
Patrz też: &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:tape_storage&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tape_storage&quot; data-wiki-id=&quot;wiki:tape_storage&quot;&gt;Taśma DAT/DLT na Linuksie&lt;/a&gt; . 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Rozpakowanie zawarto\u015bci archiwum&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rozpakowanie_zawartosci_archiwum&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1229-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:temparaturapi&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>temparaturapi</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:temparaturapi&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Sprawdzanie temperatury RapberryPi:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo vcgencmd measure_temp
temp=45.1&amp;#039;C&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:toolbox&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>toolbox</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:toolbox&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;toolbox_pod_klienta_mongodb&quot;&gt;Toolbox pod klienta MongoDB&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Scenariusz:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; potrzeba podłączyć się do zdalnej bazy MongoDB,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; klienta nie ma w repozytorium,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; nie chcę śmiecić w /usr.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Najpierw trzeba zainstalowac toolboxa:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo dnf install toolbox&lt;/pre&gt;

&lt;p&gt;
Potem, już jako zwyczajny użytkownik, utworzyć kontener (pierwszy kontener robi się długo, ponieważ toolbox ściągnie bazowy obraz Fedory):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;toolbox create --container mongodb&lt;/pre&gt;

&lt;p&gt;
Wchodzenie do konterera:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;toolcox enter --container mongodb&lt;/pre&gt;

&lt;p&gt;
Tworzenie pliku z repozytorium MongoDB 4.2 i jego instalacja:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo su -
vi /etc/yum.repos.d/mongodb.repo

[Mongodb]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

dnf install mongodb-org-shell
exit&lt;/pre&gt;

&lt;p&gt;
Uruchomienie Mongo Shell jako zwyczajny użytkownik:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mongo --host ip.ip.ip.ip -u uzytkownik --authenticationDatabase nazwabazydanych -p
(wpisac hasło)&lt;/pre&gt;

&lt;p&gt;
Z kontenera wychodzi się za pomocą &lt;em&gt;ctrl+d&lt;/em&gt;, jak z każdego innego shella.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:vbox_bridge&amp;rev=1664179418">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-26T08:03:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vbox_bridge</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:vbox_bridge&amp;rev=1664179418</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;virtualbox_mostek&quot;&gt;VirtualBox mostek&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
VirtualBox czasem nie potrafi połączyć wirtualek z siecią używając mostkowania. Mogą one wzajemnie do siebie pingować, ale nie mają łączności z resztą lokalnej sieci. Nie pingują też bramy.
&lt;/p&gt;

&lt;p&gt;
Najpierw sprawdzenie konfiguracji VirtualBoksa:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# vboxmanage list bridgedifs
Name:            wlo1
GUID:            316f6c77-0000-4000-8000-bc17b855e916
DHCP:            Disabled
IPAddress:       192.168.111.95
NetworkMask:     255.255.255.0
IPV6Address:     
IPV6NetworkMaskPrefixLength: 0
HardwareAddress: wy:my:śl:on:ym:ac
MediumType:      Ethernet
Wireless:        No
Status:          Up
VBoxNetworkName: HostInterfaceNetworking-wlo1&lt;/pre&gt;

&lt;p&gt;
W konfiguracji maszyny wirtualej należy podać &lt;strong&gt;używany przez system host&lt;/strong&gt; adres mac karty sieciowej, która będzie mostkowała połączenie:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Avbox_bridge&amp;amp;media=wiki:vboxmac.jpg&quot; class=&quot;media&quot; title=&quot;wiki:vboxmac.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=50f922&amp;amp;media=wiki:vboxmac.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Najczęściej zdarzało mi się to przy próbie używania interfejsu wlan do mostkowania. Nie jest to tylko przypadłość VirtualBoksa, ponieważ inne wirtualizatory mają tak samo. Po prostu powyższy opis zmiany adresu mac pokazuje tylko ustawienia VirtualBoksa. 
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:vbox_mem&amp;rev=1734860383">
        <dc:format>text/html</dc:format>
        <dc:date>2024-12-22T09:39:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vbox_mem</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:vbox_mem&amp;rev=1734860383</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;virtualbox_low_memory&quot;&gt;Virtualbox LOW_MEMORY&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Jeżeli podczas uruchiania wirtualki w logu pojawia się błąd:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;VERR_NO_LOW_MEMORY (-72) - Out of memory condition when allocating memory with low physical backing&lt;/pre&gt;

&lt;p&gt;
pomaga zapisanie trójki do drop_caches jako root:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# echo 3 &amp;gt; /proc/sys/vm/drop_caches&lt;/pre&gt;
&lt;hr /&gt;

&lt;p&gt;
Źródło: &lt;a href=&quot;https://www.virtualbox.org/ticket/22160#no1&quot; class=&quot;urlextern&quot; title=&quot;https://www.virtualbox.org/ticket/22160#no1&quot; rel=&quot;ugc nofollow&quot;&gt;błąd 22160&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:vimrc&amp;rev=1700245292">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-17T18:21:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vimrc</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:vimrc&amp;rev=1700245292</link>
        <description>
&lt;p&gt;
Prosty i działający vimrc:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;language messages C
syntax on
set showmatch
set number
set showcmd
set ruler
set confirm
set expandtab
set shiftwidth=2
set softtabstop=2
set autoindent
map &amp;lt;F2&amp;gt; :write % &amp;lt;CR&amp;gt;
map &amp;lt;F3&amp;gt; :set t_Co=0 &amp;lt;CR&amp;gt;
map &amp;lt;F5&amp;gt; :tabp &amp;lt;CR&amp;gt;
map &amp;lt;F6&amp;gt; :tabn &amp;lt;CR&amp;gt;
map &amp;lt;F7&amp;gt; :%s///g
au BufEnter,BufRead *sh setlocal smartindent cinwords=case,do,if,elif,else,for,function,select,then,until,while
au BufEnter,BufRead *py setlocal smartindent cinwords=class,def,if,elif,else,except,for,try,while
autocmd FileType python set tabstop=2|set shiftwidth=2

autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 &amp;amp;&amp;amp; !exists(&amp;quot;s:std_in&amp;quot;) | NERDTree | endif
map &amp;lt;C-n&amp;gt; :NERDTreeToggle&amp;lt;CR&amp;gt;&lt;/pre&gt;

&lt;p&gt;
oraz gvimrc:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;set laststatus=2
set t_Co=256

language messages C
syntax on
set showmatch
set number
set showcmd
set ruler
set confirm
set expandtab
set shiftwidth=2
set softtabstop=2
set nowrap
set autoindent
map &amp;lt;F2&amp;gt; &amp;quot;+x
map &amp;lt;F3&amp;gt; &amp;quot;+y
map &amp;lt;F4&amp;gt; &amp;quot;+gP
map &amp;lt;F7&amp;gt; :%s///g
au BufEnter,BufRead *sh setlocal smartindent cinwords=case,do,if,elif,else,for,function,select,then,until,while
au BufEnter,BufRead *py setlocal smartindent cinwords=class,def,if,elif,else,except,for,try,while
set guifont=Lucida_Console:h14:cEASTEUROPE:qDRAFT

colorscheme desert
nnoremap &amp;lt;LeftMouse&amp;gt; ma&amp;lt;LeftMouse&amp;gt;`a

if has(&amp;quot;autocmd&amp;quot;)
  au BufReadPost * if line(&amp;quot;&amp;#039;\&amp;quot;&amp;quot;) &amp;gt; 1 &amp;amp;&amp;amp; line(&amp;quot;&amp;#039;\&amp;quot;&amp;quot;) &amp;lt;= line(&amp;quot;$&amp;quot;) | exe &amp;quot;normal! g&amp;#039;\&amp;quot;&amp;quot; | endif
endif

set guicursor+=a:blinkon0&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:welcome&amp;rev=1707739749">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-12T12:09:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>welcome</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:welcome&amp;rev=1707739749</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;welcome_to_your_new_dokuwiki&quot;&gt;Welcome to your new DokuWiki&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Congratulations, your wiki is now up and running. Here are a few more tips to get you started.
&lt;/p&gt;

&lt;p&gt;
Enjoy your work with DokuWiki,&lt;br/&gt;

– the developers
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Welcome to your new DokuWiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;welcome_to_your_new_dokuwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-192&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;create_your_first_pages&quot;&gt;Create your first pages&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Your wiki needs to have a start page. As long as it doesn&amp;#039;t exist, this link will be red: &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=start&quot; class=&quot;wikilink1&quot; title=&quot;start&quot; data-wiki-id=&quot;start&quot;&gt;start&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Go on, follow that link and create the page. If you need help with using the syntax you can always refer to the &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=wiki:syntax&quot; class=&quot;wikilink1&quot; title=&quot;wiki:syntax&quot; data-wiki-id=&quot;wiki:syntax&quot;&gt;syntax page&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
You might also want to use a sidebar. To create it, just edit the &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?id=sidebar&quot; class=&quot;wikilink2&quot; title=&quot;sidebar&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;sidebar&quot;&gt;sidebar&lt;/a&gt; page. Everything in that page will be shown in a margin column on the side. Read our &lt;a href=&quot;https://www.dokuwiki.org/faq%3Asidebar&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/faq%3Asidebar&quot;&gt;FAQ on sidebars&lt;/a&gt; to learn more.
&lt;/p&gt;

&lt;p&gt;
Please be aware that not all templates support sidebars.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Create your first pages&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;create_your_first_pages&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;193-749&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;customize_your_wiki&quot;&gt;Customize your Wiki&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Once you&amp;#039;re comfortable with creating and editing pages you might want to have a look at the &lt;a href=&quot;https://wiki.baszarek.pl/doku.php?do=admin&amp;amp;page=config&quot; class=&quot;interwiki iw_this&quot; title=&quot;https://wiki.baszarek.pl/doku.php?do=admin&amp;amp;page=config&quot;&gt;configuration settings&lt;/a&gt; (be sure to login as superuser first).
&lt;/p&gt;

&lt;p&gt;
You may also want to see what &lt;a href=&quot;https://www.dokuwiki.org/plugins&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/plugins&quot;&gt;plugins&lt;/a&gt; and &lt;a href=&quot;https://www.dokuwiki.org/templates&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/templates&quot;&gt;templates&lt;/a&gt; are available at DokuWiki.org to extend the functionality and looks of your DokuWiki installation.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Customize your Wiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;customize_your_wiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;750-1165&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;join_the_community&quot;&gt;Join the Community&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki is an Open Source project that thrives through user contributions. A good way to stay informed on what&amp;#039;s going on and to get useful tips in using DokuWiki is subscribing to the &lt;a href=&quot;https://www.dokuwiki.org/newsletter&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/newsletter&quot;&gt;newsletter&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
The &lt;a href=&quot;https://forum.dokuwiki.org&quot; class=&quot;urlextern&quot; title=&quot;https://forum.dokuwiki.org&quot; rel=&quot;ugc nofollow&quot;&gt;DokuWiki User Forum&lt;/a&gt; is an excellent way to get in contact with other DokuWiki users and is just one of the many ways to get &lt;a href=&quot;https://www.dokuwiki.org/faq%3Asupport&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/faq%3Asupport&quot;&gt;support&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Of course we&amp;#039;d be more than happy to have you &lt;a href=&quot;https://www.dokuwiki.org/teams%3Agetting_involved&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/teams%3Agetting_involved&quot;&gt;getting involved&lt;/a&gt; with DokuWiki.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Join the Community&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;join_the_community&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1166-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:wiki10&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki10</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:wiki10&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;wiki_baszarek_10&quot;&gt;Wiki Baszarek 1.0&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Dwie strony z moich notatek obsługi Linuksa z 2003 roku. Standardowe sprawy: sterownik Nvidii (kto by pomyślał, że 19 lat później to nadal nie będzie trywialne), wtyczka Javy w przeglądarce, montowanie dyskietek, kompilacja programów spoza repo, itd…
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.baszarek.pl/lib/exe/detail.php?id=wiki%3Awiki10&amp;amp;media=wiki:wiki10.jpg&quot; class=&quot;media&quot; title=&quot;wiki:wiki10.jpg&quot;&gt;&lt;img src=&quot;https://wiki.baszarek.pl/lib/exe/fetch.php?w=400&amp;amp;tok=14f25d&amp;amp;media=wiki:wiki10.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:win10installusb&amp;rev=1714743472">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-03T13:37:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>win10installusb</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:win10installusb&amp;rev=1714743472</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;tworzenie_instalatora_windows_10&quot;&gt;Tworzenie instalatora Windows 10&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Tworzenie bootowalnego usb z obrazu iso Windows 10 za pomocą dd nie zadziała. Należy użyć Woeusb.
&lt;/p&gt;

&lt;p&gt;
Dla Fedory:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# sudo dnf install woeusb&lt;/pre&gt;

&lt;p&gt;
Dla RHEL/CentOS - &lt;a href=&quot;https://copr.fedorainfracloud.org/coprs/seem/WoeUSB/&quot; class=&quot;urlextern&quot; title=&quot;https://copr.fedorainfracloud.org/coprs/seem/WoeUSB/&quot; rel=&quot;ugc nofollow&quot;&gt;https://copr.fedorainfracloud.org/coprs/seem/WoeUSB/&lt;/a&gt; .
&lt;/p&gt;

&lt;p&gt;
Najpierw trzeba odmontować pendrajwa.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# sudo umount /dev/sdc&lt;/pre&gt;

&lt;p&gt;
I można skopiować zawartość pliku iso.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# sudo woeusb --target-filesystem NTFS --device Win10_20H2_Polish_x64.iso /dev/sdc&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:windowmaker&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>windowmaker</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:windowmaker&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Różne pomocne ustawienia dla WindowMakera. Zadziałają też w innych menedźerach okien.
&lt;/p&gt;

&lt;p&gt;
.bashrc:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# jasnosc ekranu
alias jasnosc=&amp;#039;sudo /usr/local/bin/jasnienie&amp;#039;

# wifi
alias wifion=&amp;#039;nmcli radio wifi on&amp;#039;
alias wifioff=&amp;#039;nmcli radio wifi off&amp;#039;

# wylaczanie
alias wylaczanie=&amp;#039;xterm -e /usr/local/bin/wylaczanie_dialog&amp;#039;

# wygaszacz ekranu
alias wygaszacz=&amp;#039;/usr/local/bin/wygaszacztimer&amp;#039;

# przyspieszenie klawiatury
xset r rate 180 60&lt;/pre&gt;

&lt;p&gt;
Jasność ekranu w /usr/local/bin/jasnienie (zależne od karty graficznej):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/bash

echo -n &amp;quot;Jest: &amp;quot;
cat /sys/class/backlight/radeon_bl0/brightness
echo -n &amp;quot;Ustaw na: &amp;quot;
read bright
sudo echo &amp;quot;$bright&amp;quot; &amp;gt; /sys/class/backlight/radeon_bl0/brightness
echo &amp;quot; &amp;quot;&lt;/pre&gt;

&lt;p&gt;
Redshift:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xgamma -bgamma 0.8&lt;/pre&gt;

&lt;p&gt;
Wyłączanie komputera w /usr/local/bin/wylaczanie_dialog:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/bash

echo &amp;quot; &amp;quot;
echo &amp;quot; W Y L A C Z A N I E   Z A   1 0   S E K U N D .&amp;quot;
echo &amp;quot; Nacisnij ctrl+c, zeby przerwac.&amp;quot;
sleep 5

echo &amp;quot; &amp;quot;

echo &amp;quot; W Y L A C Z A N I E   Z A     5   S E K U N D .&amp;quot;
echo &amp;quot; Nacisnij ctrl+c, zeby przerwac.&amp;quot;
sleep 5
sudo shutdown -h now&lt;/pre&gt;

&lt;p&gt;
Wygaszacz ekranu w /usr/local/bin/wygaszacztimer. Wystarczy, żeby uruchomił się xscreensaver, najlepiej z natychmiastowym blokowaniem ekranu. Niekompatybilny z uruchomionym sprawdzeniem czasu przez ntp.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;date --set=&amp;#039;+1 hour&amp;#039;
sleep 5
date --set=&amp;#039;-1 hour&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Fonty i ikonki w pliki ~/.gtkrc-2.0:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gtk-icon-theme-name = &amp;quot;Cheser&amp;quot;
gtk-theme-name = &amp;quot;Adwaita&amp;quot;
gtk-font-name = &amp;quot;DejaVu Sans 11&amp;quot;&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:wine&amp;rev=1700910211">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-25T11:03:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wine</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:wine&amp;rev=1700910211</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;wine&quot;&gt;Wine&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Różne rzeczy związane z Wine.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Wine&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;wine&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-54&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;gamescope&quot;&gt;Gamescope&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Uruchomienie gry na Wine z Waylandem, które przeskaluje widok do pełnego ekranu:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;INTEL_DEBUG=noccs gamescope -w 640 -h 480 -W 1920 -H 1080 --fsr-sharpness 10 -F nis -f wine MM6.exe&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Gamescope&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;gamescope&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;55-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:wlaczanie_selinux&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wlaczanie_selinux</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:wlaczanie_selinux&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;wlaczenie_selinux&quot;&gt;Włączenie Selinux&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ponowne uruchamianie Selinux na hoście, gdzie był przez jakiś czas wyłączony, lub nigdy nie był uruchomiony.
&lt;/p&gt;

&lt;p&gt;
Zmienić linijkę „SELINUX=” w pliku &lt;em&gt;/etc/sysconfig/selinux&lt;/em&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SELINUX=permissive&lt;/pre&gt;

&lt;p&gt;
Utworzyć plik &lt;em&gt;.autorelabel&lt;/em&gt; w katalogu /.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# touch /.autorelabel&lt;/pre&gt;

&lt;p&gt;
Ponownie uruchomić system. Po uruchomieniu można zmienić linijkę „SELINUX=” na
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SELINUX=enforcing&lt;/pre&gt;

&lt;p&gt;
Należy przygotować się na nie do końca oczywiste błędy w działaniu aplikacji. Wszystkie nałożone blokady Selinuksa będą widoczne w logu journal.
&lt;/p&gt;

&lt;p&gt;
Jeżeli system nie wstanie po uruchomieniu Selinuksa, można użyć parametru „selinux=0” w Grubie, który wyłącza Selinuksa przy uruchomieniu systemu.
&lt;/p&gt;

&lt;p&gt;
Jeżeli host jest automatyzowany Ansiblem, należy doinstalować moduł Pythona:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# sudo dnf install python3-policycoreutils&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:wordpress&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wordpress</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:wordpress&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;wordpress&quot;&gt;Wordpress&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Uprawnienia dla Wordpressa
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;find public_html -type d -exec setfacl -m u:domena.pl:rX {} \;
find public_html -type f -exec setfacl -m u:domena.pl:r {} \;
cd public_html/wp-content
setfacl -m d:u:domena.pl:rwX,u:domena.pl:rwX languages
setfacl -m d:u:domena.pl:rwX,u:domena.pl:rwX mu-plugins
setfacl -m d:u:domena.pl:rwX,u:domena.pl:rwX plugins
setfacl -m d:u:domena.pl:rwX,u:domena.pl:rwX themes
setfacl -m d:u:domena.pl:rwX,u:domena.pl:rwX updraft
setfacl -m d:u:domena.pl:rwX,u:domena.pl:rwX upgrade
setfacl -m d:u:domena.pl:rwX,u:domena.pl:rwX uploads&lt;/pre&gt;

&lt;p&gt;
Na czas aktualizacji Wordpress potrzebuje uprawnień zapisu dla całego katalogu public_html.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Wordpress nie rozumie &lt;abbr title=&quot;Access Control List&quot;&gt;ACL&lt;/abbr&gt;-i stwierdza, że nie ma uprawnień do plików. Trzeba dodać do wp-config.php:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;define( &amp;#039;FS_METHOD&amp;#039;, &amp;#039;direct&amp;#039; );
define( &amp;#039;FS_CHMOD_DIR&amp;#039;, ( 0770 &amp;amp; ~ umask() ) );
define( &amp;#039;FS_CHMOD_FILE&amp;#039;, ( 0660 &amp;amp; ~ umask() ) );&lt;/pre&gt;
&lt;hr /&gt;

&lt;p&gt;
Wordpress nie radzi sobie z byciem za proxy (na przykład na Apachu za Nginxem) i nie pokazuje obrazków. Można wówczas dodać poniższą konfigurację do wp-config.php (jest to tego wtyczka, ale można to zrobić ręcznie):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;//Begin Really Simple SSL Server variable fix
$_SERVER[&amp;quot;HTTPS&amp;quot;] = &amp;quot;on&amp;quot;;
//END Really Simple SSL&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;//Begin Really Simple SSL Load balancing fix
if ((isset($_ENV[&amp;quot;HTTPS&amp;quot;]) &amp;amp;&amp;amp; (&amp;quot;on&amp;quot; == $_ENV[&amp;quot;HTTPS&amp;quot;]))
|| (isset($_SERVER[&amp;quot;HTTP_X_FORWARDED_SSL&amp;quot;]) &amp;amp;&amp;amp; (strpos($_SERVER[&amp;quot;HTTP_X_FORWARDED_SSL&amp;quot;], &amp;quot;1&amp;quot;) !== false))
|| (isset($_SERVER[&amp;quot;HTTP_X_FORWARDED_SSL&amp;quot;]) &amp;amp;&amp;amp; (strpos($_SERVER[&amp;quot;HTTP_X_FORWARDED_SSL&amp;quot;], &amp;quot;on&amp;quot;) !== false))
|| (isset($_SERVER[&amp;quot;HTTP_CF_VISITOR&amp;quot;]) &amp;amp;&amp;amp; (strpos($_SERVER[&amp;quot;HTTP_CF_VISITOR&amp;quot;], &amp;quot;https&amp;quot;) !== false))
|| (isset($_SERVER[&amp;quot;HTTP_CLOUDFRONT_FORWARDED_PROTO&amp;quot;]) &amp;amp;&amp;amp; (strpos($_SERVER[&amp;quot;HTTP_CLOUDFRONT_FORWARDED_PROTO&amp;quot;], &amp;quot;https&amp;quot;) !== false))
|| (isset($_SERVER[&amp;quot;HTTP_X_FORWARDED_PROTO&amp;quot;]) &amp;amp;&amp;amp; (strpos($_SERVER[&amp;quot;HTTP_X_FORWARDED_PROTO&amp;quot;], &amp;quot;https&amp;quot;) !== false))
|| (isset($_SERVER[&amp;quot;HTTP_X_PROTO&amp;quot;]) &amp;amp;&amp;amp; (strpos($_SERVER[&amp;quot;HTTP_X_PROTO&amp;quot;], &amp;quot;SSL&amp;quot;) !== false))
) {
$_SERVER[&amp;quot;HTTPS&amp;quot;] = &amp;quot;on&amp;quot;;
}&lt;/pre&gt;
&lt;hr /&gt;

&lt;p&gt;
Sprawdzanie wersji Wordpressa:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat wp-includes/version.php&lt;/pre&gt;
&lt;hr /&gt;

&lt;p&gt;
Generator secret key: &lt;a href=&quot;https://api.wordpress.org/secret-key/1.1/salt/&quot; class=&quot;urlextern&quot; title=&quot;https://api.wordpress.org/secret-key/1.1/salt/&quot; rel=&quot;ugc nofollow&quot;&gt;api.wordpress.org/secret-key/1.1/salt&lt;/a&gt; .
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:wp_user&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wp_user</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:wp_user&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;utworzenie_uzytkownika_w_wordpressie&quot;&gt;Utworzenie użytkownika w Wordpressie&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;insert into wp_users (user_login,user_pass,user_nicename,user_email,user_url,user_registered,user_activation_key,user_status,display_name) values (&amp;#039;m.kowalski&amp;#039;,&amp;#039;&amp;#039;,&amp;#039;m.kowalski&amp;#039;,&amp;#039;m.kowalski@poczta.pl&amp;#039;,&amp;#039;&amp;#039;,&amp;#039;2021-07-09 12:00&amp;#039;,&amp;#039;&amp;#039;,0,&amp;#039;Mateusz Kowalski&amp;#039;);
UPDATE wp_users SET user_pass=MD5(&amp;#039;bardz0tajn3hasl0&amp;#039;) WHERE user_login = &amp;#039;mkowalski&amp;#039;;
insert into wp_usermeta (user_id, meta_key, meta_value) values (9,&amp;#039;wp_capabilities&amp;#039;,&amp;#039;a:1:{s:13:&amp;quot;administrator&amp;quot;;b:1;} &amp;#039;);&lt;/pre&gt;

&lt;p&gt;
W ostatnim insercie należy zwrócić uwagę na wartość user_id oraz na numer grupy w wartości meta_value. Można ją podejrzeć przeglądając wp_usermeta dla pierwszego użytkownika, ponieważ ma on zwykle pełne uprawnienia.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:wylaczeniewifibt&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wylaczeniewifibt</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:wylaczeniewifibt&amp;rev=1660815847</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;wylaczenie_wifi_oraz_bluetooth&quot;&gt;Wyłączenie WiFi oraz Bluetooth&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
W pliku /boot/config.txt należy dopisać
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# Disable wifi and bluetooth
dtoverlay=disable-wifi
dtoverlay=disable-bt&lt;/pre&gt;

&lt;/div&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:xinput_gladzik&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>xinput_gladzik</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:xinput_gladzik&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Liska dostępnych urządzeń
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ xinput --list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                	id=12	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=9	[slave  keyboard (3)]
    ↳ HD WebCam                               	id=10	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=11	[slave  keyboard (3)]
    ↳ Acer WMI hotkeys                        	id=13	[slave  keyboard (3)]&lt;/pre&gt;

&lt;p&gt;
Czytanie opcji gładzika:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ xinput list-props 12
Device &amp;#039;ETPS/2 Elantech Touchpad&amp;#039;:
	Device Enabled (147):	1
	Coordinate Transformation Matrix (149):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	libinput Tapping Enabled (284):	1
	libinput Tapping Enabled Default (285):	0
	libinput Tapping Drag Enabled (286):	1
	libinput Tapping Drag Enabled Default (287):	1
	libinput Tapping Drag Lock Enabled (288):	0
	libinput Tapping Drag Lock Enabled Default (289):	0
	libinput Tapping Button Mapping Enabled (290):	1, 0
	libinput Tapping Button Mapping Default (291):	1, 0
	libinput Accel Speed (292):	0.000000
	libinput Accel Speed Default (293):	0.000000
	libinput Natural Scrolling Enabled (294):	1
	libinput Natural Scrolling Enabled Default (295):	0
	libinput Send Events Modes Available (269):	1, 1
	libinput Send Events Mode Enabled (270):	0, 0
	libinput Send Events Mode Enabled Default (271):	0, 0
	libinput Left Handed Enabled (296):	0
	libinput Left Handed Enabled Default (297):	0
	libinput Scroll Methods Available (298):	1, 1, 0
	libinput Scroll Method Enabled (299):	1, 0, 0
	libinput Scroll Method Enabled Default (300):	1, 0, 0
	libinput Disable While Typing Enabled (301):	1
	libinput Disable While Typing Enabled Default (302):	1
	Device Node (272):	&amp;quot;/dev/input/event5&amp;quot;
	Device Product ID (273):	2, 14
	libinput Drag Lock Buttons (303):	
	libinput Horizontal Scroll Enabled (304):	1&lt;/pre&gt;

&lt;p&gt;
Ustawienia tapnięcia oraz naturalnego przewijania
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ xinput set-prop 12 284 1
$ xinput set-prop 12 294 1&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:zerowanie&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>zerowanie</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:zerowanie&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Zerowanie dysku z ładnym podglądem (pomija uszkodzone sektory):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ddrescue --force /dev/zero /dev/sdb&lt;/pre&gt;

&lt;p&gt;
Szybsze zerownie dysku (tylko partycji oraz raida):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ddrescue --force /dev/zero /dev/sdb
(ctrl+c po minucie)&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;blockdev --getsz /dev/sdb
(powiedzmy 60063744)
dd if=/dev/zero of=/dev/sdb seek=60000000 status=progress&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="https://wiki.baszarek.pl/doku.php?id=wiki:zzzver&amp;rev=1660815847">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T09:44:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>zzzver</title>
        <link>https://wiki.baszarek.pl/doku.php?id=wiki:zzzver&amp;rev=1660815847</link>
        <description>
&lt;p&gt;
Bardzo Podstawowy System Kontroli Wersji.
&lt;/p&gt;

&lt;p&gt;
Wymagania:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; bash&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; tee&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; diff&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; gzip&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; md5sum&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;#!/usr/bin/bash
# very basic version control system

# let&amp;#039;s check current directory
PWD=$(pwd)

# check flags and do stuff
if [ &amp;quot;$1&amp;quot; = &amp;quot;init&amp;quot; ] ; then
  # initialize repository
  mkdir $PWD/stable
  mkdir $PWD/test
  mkdir $PWD/archive
  touch $PWD/zzzrepo
  echo &amp;quot;$(date): repository initialized&amp;quot; | tee -a $PWD/zzzrepo

# compare stable, test and archives  
elif [ &amp;quot;$1&amp;quot; = &amp;quot;diff&amp;quot; ] ; then
  if [ -z $2 ] ; then
    # diff test and stable directories
    diff -d -r $PWD/test/ $PWD/stable/
  else
    # diff test and stable directories with the content of specified archive
    mkdir $PWD/archive/difftemp
    tar -zxvf $PWD/$2 -C $PWD/archive/difftemp
    echo &amp;quot;------ Test ------&amp;quot;
    diff -d -r $PWD/test $PWD/archive/difftemp/test
    echo &amp;quot; &amp;quot;
    echo &amp;quot; ----- Stable ------&amp;quot;
    diff -d -r $PWD/stable $PWD/archive/difftemp/stable
    rm -fr $PWD/archive/difftemp
    echo &amp;quot; &amp;quot;
  fi

# copy test to stable
elif [ &amp;quot;$1&amp;quot; = &amp;quot;merge&amp;quot; ] ; then
  # overwrite stable with test
  rm -fr $PWD/stable/*
  cp --recursive $PWD/test/* $PWD/stable/
  echo &amp;quot;$(date): merged test into stable&amp;quot; | tee -a $PWD/zzzrepo

# save stable and test as archive
elif [ &amp;quot;$1&amp;quot; = &amp;quot;save&amp;quot; ] ; then
  # save test and stable as an archive under a name of date and time
  # also make md5 hashes
  timestamp=$(date +%F_%T)
  echo &amp;quot;Making md5 hashes of files in test...&amp;quot;
  find $PWD/test -type f -print0 | xargs -0 md5sum &amp;gt; $PWD/test/zzztest.md5
  echo &amp;quot;Making md5 hashes of files in stable...&amp;quot;
  find $PWD/stable -type f -print0 | xargs -0 md5sum &amp;gt; $PWD/stable/zzzstable.md5
  tar -zcf $PWD/archive/$timestamp.tar.gz test/ stable/
  echo &amp;quot;$(date): repository archived&amp;quot; | tee -a $PWD/zzzrepo

# restore stable and / or test from archive  
elif [ &amp;quot;$1&amp;quot; = &amp;quot;load&amp;quot; ] ; then
  if [ -z $3 ] ; then
    # overwrite test and stable with content of the specified archive
    rm -fr $PWD/test
    rm -fr $PWD/stable
    tar -zxf $2 -C $PWD
    echo &amp;quot;$(date): restored backup from $2 archive&amp;quot; | tee -a $PWD/zzzrepo
  elif [ &amp;quot;$3&amp;quot; = &amp;quot;test&amp;quot; ] ; then
    # overwite just test with content of specified archive
    rm -fr $PWD/test 
    tar -k -zxf $2 -C $PWD &amp;amp;&amp;gt; /dev/null
    echo &amp;quot;$(date): restored test repo backup from $2 archive&amp;quot; | tee -a $PWD/zzzrepo
  elif [ &amp;quot;$3&amp;quot; = &amp;quot;stable&amp;quot; ] ; then
    # overwrite just stable with content of specified archive
    rm -fr $PWD/stable
    tar -k -zxf $2 -C $PWD &amp;amp;&amp;gt; /dev/null
    echo &amp;quot;$(date): restored stable repo backup from $2 archive&amp;quot; | tee -a $PWD/zzzrepo
  fi

# create md5 sums of files from stabkle and test
if [ &amp;quot;$1&amp;quot; = &amp;quot;md5&amp;quot; ] ; then
  # create md5 of each file in test and stable
  find $PWD/test/ -type f -print0 | xargs -0 md5sum &amp;gt; $PWD/test/zzztest.md5
  find $PWD/stable/ -f type -f -print0 | xargs -0 md5dum &amp;gt; $PWD/stable/zzzstable.md5
  echo &amp;quot;$(date): sums written into test/zzztest.md5 and stable/zzzstable.md5 files.&amp;quot; | tee -a $PWD/zzzrepo
fi

# help 
elif [ -z $1 ] ; then
  # echo some instructions
  echo &amp;quot; &amp;quot;
  echo -e &amp;quot;Please specify:\r
   zzzver init - to create new repository,\r
   zzzver diff - to compare test and stable repo,\r
   zzzver diff archive/name.tar.gz - to compare test and stable with specified archive,\r
   zzzver merge - to copy test into stable,\r
   zzzver save - to archive test and stable as date_time.tar.gz,\r
   zzzver load archive/name.tar.gz - to replace test and stable with content of specified archive,\r
   zzzver load archive/name.tar.gz test - to replace test with content of specified archive,\r
   zzzver load archive/name.tar.gz stable - to replace stable with content of specified archive.\r
   zzzver md5 - to make md5 hashes of files from testing and stable.&amp;quot;
   echo &amp;quot; &amp;quot;

# catch wrong parameters
else
  echo &amp;quot;I give up, you wrote something wrong. :(&amp;quot;
  echo &amp;quot;Run zzzver without parameters to get some help.&amp;quot;
  echo &amp;quot; &amp;quot;
fi&lt;/pre&gt;
</description>
    </item>
</rdf:RDF>
