<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>SOFTWARE on PIGSTY</title>
    <link>https://v27.pgsty.pro/module/software/</link>
    <description>Recent content in SOFTWARE on PIGSTY</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Sun, 23 Jun 2024 00:00:00 +0000</lastBuildDate>
    
    
      <atom:link href="https://v27.pgsty.pro/module/software/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Odoo: OSS ERP for Enterprise</title>
        <link>https://v27.pgsty.pro/docs/software/odoo/</link>
        <pubDate>Sun, 23 Jun 2024 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/odoo/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://www.odoo.com/&#34;&gt;Odoo&lt;/a&gt; is an open-source enterprise resource planning (ERP) software&#xA;that provides a full suite of business applications, including CRM, sales, purchasing, inventory, production, accounting, and other management functions. Odoo is a typical web application that uses PostgreSQL as the underlying database.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;All your business on one platform, Simple, efficient, yet affordable&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;get-started&#34;&gt;Get Started&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Check &lt;a href=&#34;https://github.com/Vonng/pigsty/blob/v2.7.0/app/odoo/.env&#34;&gt;&lt;code&gt;.env&lt;/code&gt;&lt;/a&gt; file for configurable environment variables:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e160ef8a-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;6&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e160ef8a-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# https://hub.docker.com/_/odoo#&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PG_HOST&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;10.10.10.10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PG_PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5432&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PG_USER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;dbuser_odoo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PG_PASS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;DBUser.Odoo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ODOO_PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8069&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Then launch odoo with:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Supabase: Self-Hosting OSS Firebase</title>
        <link>https://v27.pgsty.pro/docs/software/supabase/</link>
        <pubDate>Sun, 23 Jun 2024 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/supabase/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://supabase.com/&#34;&gt;Supabase&lt;/a&gt;, The open-source Firebase alternative based on PostgreSQL.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty allow you to self-host &lt;strong&gt;supabase&lt;/strong&gt; with existing managed HA postgres cluster, and launch the stateless part of supabase with docker-compose.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Notice: Supabase is &lt;a href=&#34;https://supabase.com/ga&#34;&gt;GA&lt;/a&gt; since 2024.04.15&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;To run supabase with existing postgres instance, prepare the &lt;a href=&#34;https://v27.pgsty.pro/docs/software/supabase/#database&#34;&gt;database&lt;/a&gt; with &lt;a href=&#34;https://github.com/Vonng/pigsty/blob/v2.7.0/files/pigsty/supabase.yml&#34;&gt;&lt;code&gt;supabase.yml&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;then launch the &lt;a href=&#34;https://v27.pgsty.pro/docs/software/supabase/#stateless-part&#34;&gt;stateless part&lt;/a&gt; with the &lt;a href=&#34;https://github.com/Vonng/pigsty/blob/v2.7.0/app/supabase/docker-compose.yml&#34;&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;&lt;/a&gt; file:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-07a44e46-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-07a44e46-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; app/supabase&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; make up    &lt;span class=&#34;c1&#34;&gt;# https://supabase.com/docs/guides/self-hosting/docker&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Then you can access the supabase studio dashboard via &lt;code&gt;http://&amp;lt;admin_ip&amp;gt;:8000&lt;/code&gt; by default, the default dashboard username is &lt;code&gt;supabase&lt;/code&gt; and password is &lt;code&gt;pigsty&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Kong: the Nginx API Gateway</title>
        <link>https://v27.pgsty.pro/docs/software/kong/</link>
        <pubDate>Sat, 21 May 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/kong/</guid>
        <description>&lt;img class=&#34;td-image&#34; src=&#34;https://v27.pgsty.pro/img/docs/app/kong.jpeg&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-417b9f27-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-417b9f27-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; app/kong &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; docker compose up -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-417b9f27-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-417b9f27-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make up         &lt;span class=&#34;c1&#34;&gt;# pull up kong with docker-compose&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make ui         &lt;span class=&#34;c1&#34;&gt;# run swagger ui container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make log        &lt;span class=&#34;c1&#34;&gt;# tail -f kong logs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make info       &lt;span class=&#34;c1&#34;&gt;# introspect kong with jq&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make stop       &lt;span class=&#34;c1&#34;&gt;# stop kong container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make clean      &lt;span class=&#34;c1&#34;&gt;# remove kong container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make rmui       &lt;span class=&#34;c1&#34;&gt;# remove swagger ui container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make pull       &lt;span class=&#34;c1&#34;&gt;# pull latest kong image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make rmi        &lt;span class=&#34;c1&#34;&gt;# remove kong image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make save       &lt;span class=&#34;c1&#34;&gt;# save kong image to /tmp/kong.tgz&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make load       &lt;span class=&#34;c1&#34;&gt;# load kong image from /tmp&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;scripts&#34;&gt;Scripts&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Default Port: 8000&lt;/li&gt;&#xA;&lt;li&gt;Default SSL Port: 8443&lt;/li&gt;&#xA;&lt;li&gt;Default Admin Port: 8001&lt;/li&gt;&#xA;&lt;li&gt;Default Postgres Database: &lt;code&gt;postgres://dbuser_kong:DBUser.Kong@10.10.10.10:5432/kong&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-417b9f27-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-417b9f27-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# postgres://dbuser_kong:DBUser.Kong@10.10.10.10:5432/kong&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- {&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;kong, owner&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dbuser_kong, revokeconn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;true , comment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;kong the api gateway database }&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- {&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dbuser_kong, password&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DBUser.Kong , pgbouncer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;true , roles&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;dbrole_admin ] }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Jupyter: AI Notebook &amp; IDE</title>
        <link>https://v27.pgsty.pro/docs/software/jupyter/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/jupyter/</guid>
        <description>&lt;p&gt;Run jupyter notebook with docker, you have to:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;change the default password in &lt;a href=&#34;https://github.com/Vonng/pigsty/blob/v2.7.0/app/jupyter/.env&#34;&gt;&lt;code&gt;.env&lt;/code&gt;&lt;/a&gt;: &lt;code&gt;JUPYTER_TOKEN&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;create data dir with proper permission: &lt;code&gt;make dir&lt;/code&gt;, owned by &lt;code&gt;1000:100&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;&lt;code&gt;make up&lt;/code&gt; to pull up jupyter with docker compose&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-98cfe27f-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-98cfe27f-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/pigsty/app/jupyter &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; make dir up&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Visit &lt;a href=&#34;http://lab.pigsty&#34;&gt;http://lab.pigsty&lt;/a&gt; or http://10.10.10.10:8888, the default password is &lt;code&gt;pigsty&lt;/code&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://lab.pigsty?token=pigsty&#34;&gt;&lt;code&gt;http://lab.pigsty?token=pigsty&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;prepare&#34;&gt;Prepare&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Create a data directory &lt;code&gt;/data/jupyter&lt;/code&gt;, with the default uid &amp;amp; gid &lt;code&gt;1000:100&lt;/code&gt;:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Gitea: Simple Self-Hosting Git Service</title>
        <link>https://v27.pgsty.pro/docs/software/gitea/</link>
        <pubDate>Wed, 25 May 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/gitea/</guid>
        <description>&lt;p&gt;Public Demo: &lt;a href=&#34;http://git.pigsty.cc&#34;&gt;http://git.pigsty.cc&lt;/a&gt;&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://v27.pgsty.pro/img/docs/app/gitea.jpeg&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c4662d26-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c4662d26-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/pigsty/app/gitea&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; make up&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Pigsty use &lt;code&gt;8889&lt;/code&gt; port for gitea by default&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://git.pigsty&#34;&gt;http://git.pigsty&lt;/a&gt; or http://10.10.10.10:8889&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c4662d26-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c4662d26-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make up      &lt;span class=&#34;c1&#34;&gt;# pull up gitea with docker-compose in minimal mode&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make run     &lt;span class=&#34;c1&#34;&gt;# launch gitea with docker , local data dir and external PostgreSQL&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make view    &lt;span class=&#34;c1&#34;&gt;# print gitea access point&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make log     &lt;span class=&#34;c1&#34;&gt;# tail -f gitea logs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make info    &lt;span class=&#34;c1&#34;&gt;# introspect gitea with jq&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make stop    &lt;span class=&#34;c1&#34;&gt;# stop gitea container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make clean   &lt;span class=&#34;c1&#34;&gt;# remove gitea container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make pull    &lt;span class=&#34;c1&#34;&gt;# pull latest gitea image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make rmi     &lt;span class=&#34;c1&#34;&gt;# remove gitea image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make save    &lt;span class=&#34;c1&#34;&gt;# save gitea image to /tmp/gitea.tgz&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make load    &lt;span class=&#34;c1&#34;&gt;# load gitea image from /tmp&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;postgresql-preparation&#34;&gt;PostgreSQL Preparation&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Gitea use built-in SQLite as default metadata storage, you can let Gitea use external PostgreSQL by setting connection string environment variable&lt;/p&gt;</description>
      </item>
    <item>
        <title>Wiki.js: OSS Wiki Software</title>
        <link>https://v27.pgsty.pro/docs/software/wiki/</link>
        <pubDate>Wed, 25 May 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/wiki/</guid>
        <description>&lt;p&gt;Public Demo: &lt;a href=&#34;http://wiki.pigsty.cc&#34;&gt;http://wiki.pigsty.cc&lt;/a&gt;&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://v27.pgsty.pro/img/docs/app/wiki.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;h2 id=&#34;tl-dr&#34;&gt;TL; DR&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-dab312e5-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-dab312e5-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; app/wiki &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; docker compose up -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;postgres-preparation&#34;&gt;Postgres Preparation&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-dab312e5-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-dab312e5-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# postgres://dbuser_wiki:DBUser.Wiki@10.10.10.10:5432/wiki&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- {&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;wiki, owner&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dbuser_wiki, revokeconn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;true , comment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;wiki the api gateway database }&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- {&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dbuser_wiki, password&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DBUser.Wiki , pgbouncer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;true , roles&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;dbrole_admin ] }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-dab312e5-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-dab312e5-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-user pg-meta dbuser_wiki&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/pgsql-db   pg-meta wiki&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;configuration&#34;&gt;Configuration&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-dab312e5-fence-3&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;15&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-dab312e5-fence-3-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;wiki&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;wiki&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;requarks/wiki:2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DB_TYPE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;postgres&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DB_HOST&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10.10.10.10&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DB_PORT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5432&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DB_USER&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;dbuser_wiki&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DB_PASS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;DBUser.Wiki&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DB_NAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;wiki&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;unless-stopped&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;9002:3000&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;access&#34;&gt;Access&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Default Port for wiki: 9002&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-dab312e5-fence-4&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-dab312e5-fence-4-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# add to nginx_upstream&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- {&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;wiki  , domain&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;wiki.pigsty.cc , endpoint&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;127.0.0.1:9002&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-dab312e5-fence-5&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-dab312e5-fence-5-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./infra.yml -t nginx_config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ansible all -b -a &lt;span class=&#34;s1&#34;&gt;&amp;#39;nginx -s reload&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Minio: OSS AWS S3 Alternative</title>
        <link>https://v27.pgsty.pro/docs/software/minio/</link>
        <pubDate>Mon, 18 Apr 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/minio/</guid>
        <description>&lt;p&gt;Public Demo: &lt;a href=&#34;http://sss.pigsty.cc&#34;&gt;http://sss.pigsty.cc&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Compose template credential: &lt;code&gt;minioadmin&lt;/code&gt; / &lt;code&gt;minioadmin&lt;/code&gt;. The standalone command below uses &lt;code&gt;admin&lt;/code&gt; / &lt;code&gt;pigsty.minio&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://v27.pgsty.pro/img/docs/app/minio.jpeg&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;h2 id=&#34;tl-dr&#34;&gt;TL; DR&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Launch minio (s3) service on 9000 &amp;amp; 9001&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-7e443f8b-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-7e443f8b-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/pigsty/app/minio &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; docker compose up -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-7e443f8b-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-7e443f8b-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -p 9000:9000 -p 9001:9001 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;MINIO_ROOT_USER=admin&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;MINIO_ROOT_PASSWORD=pigsty.minio&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  minio/minio server /data --console-address &lt;span class=&#34;s2&#34;&gt;&amp;#34;:9001&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The standalone &lt;code&gt;docker run&lt;/code&gt; example is available at http://10.10.10.10:9000 with user &lt;code&gt;admin&lt;/code&gt; and password &lt;code&gt;pigsty.minio&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>ByteBase: PG Schema Migration</title>
        <link>https://v27.pgsty.pro/docs/software/bytebase/</link>
        <pubDate>Fri, 20 May 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/bytebase/</guid>
        <description>&lt;h2 id=&#34;bytebase&#34;&gt;ByteBase&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://bytebase.com/&#34;&gt;ByteBase&lt;/a&gt; is a database schema change management tool, which is a tool for database schema changes. The following command will start a ByteBase on the meta node &lt;code&gt;8887&lt;/code&gt; port by default.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-37c25733-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-37c25733-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p /data/bytebase/data&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --init --name bytebase --restart always --detach --publish 8887:8887 --volume /data/bytebase/data:/var/opt/bytebase &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    bytebase/bytebase:latest --data /var/opt/bytebase --host http://ddl.pigsty --port &lt;span class=&#34;m&#34;&gt;8887&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;访问 http://10.10.10.10:8887/ 或 &lt;a href=&#34;http://ddl.pigsty/&#34;&gt;http://ddl.pigsty&lt;/a&gt; 即可使用 ByteBase，您需要依次创建项目、环境、实例、数据库，即可开始进行模式变更。 公开Demo地址： &lt;a href=&#34;http://ddl.pigsty.cc&#34;&gt;http://ddl.pigsty.cc&lt;/a&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>PGAdmin4: PG Admin GUI Tool</title>
        <link>https://v27.pgsty.pro/docs/software/pgadmin/</link>
        <pubDate>Mon, 25 Apr 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/pgadmin/</guid>
        <description>&lt;p&gt;pgAdmin4 is a useful PostgreSQL management tool. Execute the following command to launch the pgadmin service on the admin node:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d6129233-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d6129233-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/pigsty/app/pgadmin &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; docker compose up -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The default port for pgadmin is &lt;code&gt;8885&lt;/code&gt;, and you can access it through the following address:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://adm.pigsty&#34;&gt;http://adm.pigsty&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;demo&#34;&gt;Demo&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Public Demo：http://adm.pigsty.cc。&lt;/p&gt;&#xA;&lt;p&gt;Credentials: &lt;code&gt;admin@pigsty.cc&lt;/code&gt; / &lt;code&gt;pigsty&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://v27.pgsty.pro/img/docs/app/pgadmin.jpeg&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;h2 id=&#34;tl-dr&#34;&gt;TL; DR&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d6129233-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d6129233-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/pigsty/app/pgadmin   &lt;span class=&#34;c1&#34;&gt;# enter docker compose dir&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make up                   &lt;span class=&#34;c1&#34;&gt;# launch pgadmin container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make conf view            &lt;span class=&#34;c1&#34;&gt;# load pigsty server list&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Shortcuts:&lt;/p&gt;</description>
      </item>
    <item>
        <title>PostgREST: Generate REST API from Schema</title>
        <link>https://v27.pgsty.pro/docs/software/postgrest/</link>
        <pubDate>Sat, 21 May 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/postgrest/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://postgrest.org/en/stable/index.html&#34;&gt;PostgREST&lt;/a&gt; is a binary component that automatically generates a REST API&#xA;based on the PostgreSQL database schema.&lt;/p&gt;&#xA;&lt;p&gt;For example, the following command will launch postgrest with docker (local port 8884, using default admin user, and&#xA;expose Pigsty CMDB schema):&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-827de25f-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-827de25f-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --init --name postgrest --restart always --detach --publish 8884:8081 postgrest/postgrest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Visit &lt;a href=&#34;http://10.10.10.10:8884/&#34;&gt;http://10.10.10.10:8884&lt;/a&gt; will show all auto-generated API definitions and automatically&#xA;expose API documentation using &lt;a href=&#34;http://home.pigsty.cc:8883&#34;&gt;Swagger Editor&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>SchemaSPY: Dump &amp; Visualize PG Schema</title>
        <link>https://v27.pgsty.pro/docs/software/schemaspy/</link>
        <pubDate>Sat, 21 May 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/schemaspy/</guid>
        <description>&lt;p&gt;Use the following &lt;code&gt;docker&lt;/code&gt; command to generate a database schema report, using CMDB as an example:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-adac8644-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-adac8644-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -v /www/schema/pg-meta/meta/pigsty:/output andrewjones/schemaspy-postgres:latest -host 10.10.10.10 -port &lt;span class=&#34;m&#34;&gt;5432&lt;/span&gt; -u dbuser_dba -p DBUser.DBA -db meta -s pigsty&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Then visit &lt;a href=&#34;http://h.pigsty/schema/pg-meta/meta/pigsty&#34;&gt;http://h.pigsty/schema/pg-meta/meta/pigsty&lt;/a&gt; to access the schema report.&lt;/p&gt;</description>
      </item>
    <item>
        <title>PGWeb: Browser-based PG Client</title>
        <link>https://v27.pgsty.pro/docs/software/pgweb/</link>
        <pubDate>Fri, 18 Mar 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/pgweb/</guid>
        <description>&lt;p&gt;PGWEB: &lt;a href=&#34;https://github.com/sosedoff/pgweb&#34;&gt;https://github.com/sosedoff/pgweb&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Simple web-based and cross-platform PostgreSQL database explorer.&lt;/p&gt;&#xA;&lt;p&gt;Public Demo: &lt;a href=&#34;http://cli.pigsty.cc&#34;&gt;http://cli.pigsty.cc&lt;/a&gt;&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://v27.pgsty.pro/img/docs/app/pgweb.jpeg&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;h2 id=&#34;tl-dr&#34;&gt;TL; DR&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4880d888-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4880d888-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/pigsty/app/pgweb &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; make up&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Visit &lt;a href=&#34;http://cli.pigsty&#34;&gt;http://cli.pigsty&lt;/a&gt; or http://10.10.10.10:8886&lt;/p&gt;&#xA;&lt;p&gt;Try connecting with example URLs:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4880d888-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4880d888-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;postgres://dbuser_meta:DBUser.Meta@10.10.10.10:5432/meta?sslmode&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;disable&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;postgres://test:test@10.10.10.11:5432/test?sslmode&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;disable&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4880d888-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4880d888-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make up         &lt;span class=&#34;c1&#34;&gt;# pull up pgweb with docker compose&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make run        &lt;span class=&#34;c1&#34;&gt;# launch pgweb with docker&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make view       &lt;span class=&#34;c1&#34;&gt;# print pgweb access point&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make log        &lt;span class=&#34;c1&#34;&gt;# tail -f pgweb logs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make info       &lt;span class=&#34;c1&#34;&gt;# introspect pgweb with jq&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make stop       &lt;span class=&#34;c1&#34;&gt;# stop pgweb container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make clean      &lt;span class=&#34;c1&#34;&gt;# remove pgweb container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make pull       &lt;span class=&#34;c1&#34;&gt;# pull latest pgweb image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make rmi        &lt;span class=&#34;c1&#34;&gt;# remove pgweb image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make save       &lt;span class=&#34;c1&#34;&gt;# save pgweb image to /tmp/docker/pgweb.tgz&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make load       &lt;span class=&#34;c1&#34;&gt;# load pgweb image from /tmp/docker/pgweb.tgz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;快捷方式&#34;&gt;快捷方式&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4880d888-fence-3&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4880d888-fence-3-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make up         &lt;span class=&#34;c1&#34;&gt;# pull up pgweb with docker-compose&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make run        &lt;span class=&#34;c1&#34;&gt;# launch pgweb with docker&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make view       &lt;span class=&#34;c1&#34;&gt;# print pgweb access point&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make log        &lt;span class=&#34;c1&#34;&gt;# tail -f pgweb logs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make info       &lt;span class=&#34;c1&#34;&gt;# introspect pgweb with jq&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make stop       &lt;span class=&#34;c1&#34;&gt;# stop pgweb container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make clean      &lt;span class=&#34;c1&#34;&gt;# remove pgweb container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make pull       &lt;span class=&#34;c1&#34;&gt;# pull latest pgweb image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make rmi        &lt;span class=&#34;c1&#34;&gt;# remove pgweb image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make save       &lt;span class=&#34;c1&#34;&gt;# save pgweb image to /tmp/pgweb.tgz&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make load       &lt;span class=&#34;c1&#34;&gt;# load pgweb image from /tmp&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>Software &amp; Tools</title>
        <link>https://v27.pgsty.pro/docs/software/</link>
        <pubDate>Sun, 23 Jun 2024 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/</guid>
        <description>&lt;p&gt;PostgreSQL is the most popular database in the world, and countless software is built on PostgreSQL, around PostgreSQL, or serves PostgreSQL itself, such as&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&amp;ldquo;&lt;strong&gt;Application software&lt;/strong&gt;&amp;rdquo; that uses PostgreSQL as the preferred database&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;&lt;strong&gt;Tooling software&lt;/strong&gt;&amp;rdquo; that serves PostgreSQL software development and management&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;&lt;strong&gt;Database software&lt;/strong&gt;&amp;rdquo; that derives, wraps, forks, modifies, or extends PostgreSQL&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;And Pigsty just have a series of Docker Compose templates for these software, application and databases:&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Name&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Website&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;State&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Port&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Domain&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/software/supabase/&#34;&gt;&lt;strong&gt;Supabase&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://supabase.com/&#34;&gt;Supabase&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;DB&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;8000&lt;/td&gt;&#xA;      &lt;td&gt;supa.pigsty&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS Firebase Alternative, Backend as Platform&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;PolarDB&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://github.com/ApsaraDB/PolarDB-for-PostgreSQL&#34;&gt;PolarDB&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;DB&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;5532&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS RAC for PostgreSQL&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;FerretDB&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.ferretdb.com/&#34;&gt;FerretDB&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;DB&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;27017&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS Mongo Alternative base on PostgreSQL&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/software/minio/&#34;&gt;&lt;strong&gt;MinIO&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://min.io/&#34;&gt;MinIO&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;DB&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;9000&lt;/td&gt;&#xA;      &lt;td&gt;sss.pigsty&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS AWS S3 Alternative, Simple Storage Service&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;EdgeDB&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.edgedb.com/&#34;&gt;EdgeDB&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;DB&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Planned&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS Graph Database base on PostgreSQL&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;NocoDB&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://nocodb.com/&#34;&gt;NocoDB&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;8080&lt;/td&gt;&#xA;      &lt;td&gt;noco.pigsty&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS Airtable Alternative over PostgreSQL&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/software/odoo/&#34;&gt;&lt;strong&gt;Odoo&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.odoo.com/&#34;&gt;Odoo&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;8069&lt;/td&gt;&#xA;      &lt;td&gt;odoo.pigsty&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS ERP Software base on PostgreSQL&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/software/jupyter/&#34;&gt;&lt;strong&gt;Jupyter&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://jupyter.org/&#34;&gt;Jupyter&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;8888&lt;/td&gt;&#xA;      &lt;td&gt;lab.pigsty&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS AI Python Notebook &amp;amp; Data Analysis IDE&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/software/gitea/&#34;&gt;&lt;strong&gt;Gitea&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://gitea.com/&#34;&gt;Gitea&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;8889&lt;/td&gt;&#xA;      &lt;td&gt;git.pigsty&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS DevOps Git Service&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/software/wiki/&#34;&gt;&lt;strong&gt;Wiki&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://js.wiki/&#34;&gt;Wiki.js&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;9002&lt;/td&gt;&#xA;      &lt;td&gt;wiki.pigsty&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS Wiki Software&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;GitLab&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://gitlab.com/&#34;&gt;GitLab&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Planned&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS GitHub Alternative, Code Management Platform&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Mastodon&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://joinmastodon.org/&#34;&gt;Mastodon&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Planned&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS Decentralized Social Network&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Keycloak&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.keycloak.org/&#34;&gt;Keycloak&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Planned&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS Identity &amp;amp; Access Management Component&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Harbour&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://goharbor.io/&#34;&gt;Harbour&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Planned&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS Docker/K8S Image Repository&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Confluence&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.atlassian.com/software/confluence&#34;&gt;Confluence&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Planned&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Enterprise Knowledge Management System&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Jira&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.atlassian.com/software/jira&#34;&gt;Jira&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Planned&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Enterprise Project Management Tools&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Zabbix&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.zabbix.com/&#34;&gt;Zabbix 7&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Planned&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS Monitoring Platform for Enterprise&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Grafana&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://grafana.com/&#34;&gt;Grafana&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Planned&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Dashboard, Data Visualization &amp;amp; Monitoring Platform&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Metabase&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.metabase.com/&#34;&gt;Metabase&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;9004&lt;/td&gt;&#xA;      &lt;td&gt;mtbs.pigsty&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Fast analysis of data from multiple data sources&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;ByteBase&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.bytebase.com/&#34;&gt;ByteBase&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;APP&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;8887&lt;/td&gt;&#xA;      &lt;td&gt;ddl.pigsty&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Database Migration Tool for PostgreSQL&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/software/kong/&#34;&gt;&lt;strong&gt;Kong&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://konghq.com/&#34;&gt;Kong&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;TOOL&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;8000&lt;/td&gt;&#xA;      &lt;td&gt;api.pigsty&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;OSS API Gateway based on Nginx/OpenResty&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/software/postgrest/&#34;&gt;&lt;strong&gt;PostgREST&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://postgrest.org/&#34;&gt;PostgREST&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;TOOL&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;8884&lt;/td&gt;&#xA;      &lt;td&gt;api.pigsty&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Generate RESTAPI from PostgreSQL Schemas&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/software/pgadmin/&#34;&gt;&lt;strong&gt;pgAdmin4&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgadmin.org/&#34;&gt;pgAdmin4&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;TOOL&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;8885&lt;/td&gt;&#xA;      &lt;td&gt;adm.pigsty&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL GUI Admin Tools&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/software/pgweb/&#34;&gt;&lt;strong&gt;pgWeb&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://github.com/sosedoff/pgweb?tab=readme-ov-file&#34;&gt;pgWeb&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;TOOL&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;8886&lt;/td&gt;&#xA;      &lt;td&gt;cli.pigsty&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL Web GUI Client&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;SchemaSpy&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://schemaspy.org/&#34;&gt;SchemaSpy&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;TOOL&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Planned&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Dump &amp;amp; Visualize PostgreSQL Schema&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;pgBadger&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://github.com/darold/pgbadger&#34;&gt;pgBadger&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;TOOL&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Planned&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL Log Analysis&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;pg_exporter&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://github.com/Vonng/pg_exporter&#34;&gt;pg_exporter&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;TOOL&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;GA&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;9630&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Expose PostgreSQL &amp;amp; Pgbouncer Metrics for Prometheus&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-callout td-callout--success&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;span class=&#34;td-callout__label&#34;&gt;How to prepare Docker?&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&lt;p&gt;To run docker compose templates, you need to install the &lt;a href=&#34;https://v27.pgsty.pro/docs/docker/&#34;&gt;&lt;strong&gt;&lt;code&gt;DOCKER&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; module on the &lt;a href=&#34;https://v27.pgsty.pro/docs/node/#common-node&#34;&gt;&lt;strong&gt;node&lt;/strong&gt;&lt;/a&gt;,&#xA;If you don&amp;rsquo;t have the Internet access or having firewall issues, you may need to configure a DockerHub proxy, check the &lt;a href=&#34;https://v27.pgsty.pro/docs/tasks/docker/&#34;&gt;&lt;strong&gt;tutorial&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Discourse: OSS Forum Software</title>
        <link>https://v27.pgsty.pro/docs/software/discourse/</link>
        <pubDate>Fri, 20 May 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/discourse/</guid>
        <description>&lt;p&gt;To setup an open-source forum Discourse, you need to adjust the default &lt;code&gt;app.yml&lt;/code&gt; config, focusing on the SMTP part of the configuration.&lt;/p&gt;&#xA;&lt;details&gt;&lt;summary&gt;Discourse Config Example&lt;/summary&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e4e233d8-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;49&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e4e233d8-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;templates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;templates/web.china.template.yml&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;templates/postgres.template.yml&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;templates/redis.template.yml&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;templates/web.template.yml&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;templates/web.ratelimited.template.yml&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;## Uncomment these two lines if you wish to add Lets Encrypt (https)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# - &amp;#34;templates/web.ssl.template.yml&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# - &amp;#34;templates/web.letsencrypt.ssl.template.yml&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;expose&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;80:80&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# http&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;443:443&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# https&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;db_default_text_search_config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;pg_catalog.english&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;db_shared_buffers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;768MB&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;env&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;LC_ALL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;en_US.UTF-8&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;LANG&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;en_US.UTF-8&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;LANGUAGE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;en_US.UTF-8&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;EMBER_CLI_PROD_ASSETS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;UNICORN_WORKERS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DISCOURSE_HOSTNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;forum.pigsty&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DISCOURSE_DEVELOPER_EMAILS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;fengruohang@outlook.com,rh@vonng.com&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DISCOURSE_SMTP_ENABLE_START_TLS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DISCOURSE_SMTP_AUTHENTICATION&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;login&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DISCOURSE_SMTP_OPENSSL_VERIFY_MODE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;none&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DISCOURSE_SMTP_ADDRESS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;smtpdm.server.address&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DISCOURSE_SMTP_PORT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DISCOURSE_SMTP_USER_NAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;no_reply@mail.pigsty.cc&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DISCOURSE_SMTP_PASSWORD&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;password&amp;gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;DISCOURSE_SMTP_DOMAIN&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;mail.pigsty.cc&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;volume&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/var/discourse/shared/standalone&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;guest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/shared&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;volume&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/var/discourse/shared/standalone/log/var-log&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;guest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/var/log&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;hooks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;after_code&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;exec&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;$home/plugins&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;git clone https://github.com/discourse/docker_manager.git&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;exec&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;echo &amp;#34;Beginning of custom commands&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# - exec: rails r &amp;#34;SiteSetting.notification_email=&amp;#39;no_reply@mail.pigsty.cc&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;exec&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;echo &amp;#34;End of custom commands&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/details&gt;&#xA;&lt;p&gt;Then launch Discourse with the following command:&lt;/p&gt;</description>
      </item>
    <item>
        <title>GitLab: OSS GitHub Alternative</title>
        <link>https://v27.pgsty.pro/docs/software/gitlab/</link>
        <pubDate>Fri, 20 May 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/gitlab/</guid>
        <description>&lt;p&gt;Check &lt;a href=&#34;https://docs.gitlab.com/ee/install/docker.html&#34;&gt;Gitlab Docker Deployment&lt;/a&gt; to finish docker deployment.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e3a640c-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;14&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e3a640c-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;GITLAB_HOME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/data/gitlab&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo docker run --detach &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --hostname gitlab.example.com &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --publish 443:443 --publish 80:80 --publish 23:22 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name gitlab &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --restart always &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --volume &lt;span class=&#34;nv&#34;&gt;$GITLAB_HOME&lt;/span&gt;/config:/etc/gitlab &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --volume &lt;span class=&#34;nv&#34;&gt;$GITLAB_HOME&lt;/span&gt;/logs:/var/log/gitlab &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --volume &lt;span class=&#34;nv&#34;&gt;$GITLAB_HOME&lt;/span&gt;/data:/var/opt/gitlab &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --shm-size 256m &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  gitlab/gitlab-ee:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo docker &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; -it gitlab grep &lt;span class=&#34;s1&#34;&gt;&amp;#39;Password:&amp;#39;&lt;/span&gt; /etc/gitlab/initial_root_password&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Then change the connection string to the Pigsty managed PostgreSQL clusters.&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
