{"id":42007,"date":"2025-12-15T14:13:09","date_gmt":"2025-12-15T13:13:09","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=42007"},"modified":"2025-12-15T14:13:11","modified_gmt":"2025-12-15T13:13:11","slug":"forgejo-organizations-repositories-and-actions","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/","title":{"rendered":"Forgejo: Organizations, Repositories and Actions"},"content":{"rendered":"\n<p>In the <a href=\"https:\/\/www.dbi-services.com\/blog\/what-is-forgejo-and-getting-it-up-and-running-on-freebsd-15\/\" target=\"_blank\" rel=\"noreferrer noopener\">last post <\/a>we&#8217;ve deployed Forgejo on FreeBSD 15. In this post we&#8217;re going to do something with it and that is: We&#8217;ll create a new organization, a new repository, and finally we want to create a simple action. An &#8220;Action&#8221; is what GitLab calls a pipeline.<\/p>\n\n\n\n<p>Creating a new organization is just a matter of a few clicks:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"303\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1-1024x303.png\" alt=\"\" class=\"wp-image-42027\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1-1024x303.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1-300x89.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1-768x227.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1-1536x455.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1.png 1904w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"303\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo2-1024x303.png\" alt=\"\" class=\"wp-image-42028\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo2-1024x303.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo2-300x89.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo2-768x227.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo2-1536x455.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo2.png 1904w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The only change to the default settings is the visibility, which is changed to private. The interface directly switches to the new organizations once it is created:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"303\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo3-1024x303.png\" alt=\"\" class=\"wp-image-42029\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo3-1024x303.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo3-300x89.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo3-768x227.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo3-1536x455.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo3.png 1904w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The next step is to create and initialize a new repository, which is also just a matter of a few clicks:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"303\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo4-1024x303.png\" alt=\"\" class=\"wp-image-42032\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo4-1024x303.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo4-300x89.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo4-768x227.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo4-1536x455.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo4.png 1904w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"933\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo5.png\" alt=\"\" class=\"wp-image-42033\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo5.png 756w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo5-243x300.png 243w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" \/><\/figure>\n\n\n\n<p>All the defaults, except for the &#8220;private&#8221; flag.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"472\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo6-1024x472.png\" alt=\"\" class=\"wp-image-42034\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo6-1024x472.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo6-300x138.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo6-768x354.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo6.png 1399w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>To clone this repository locally you&#8217;ll need to add your public ssh key to your user&#8217;s profile:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"396\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo7-1024x396.png\" alt=\"\" class=\"wp-image-42040\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo7-1024x396.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo7-300x116.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo7-768x297.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo7-1536x594.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo7.png 1669w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"396\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo8-1024x396.png\" alt=\"\" class=\"wp-image-42041\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo8-1024x396.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo8-300x116.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo8-768x297.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo8-1536x594.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo8.png 1669w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"396\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo9-1024x396.png\" alt=\"\" class=\"wp-image-42042\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo9-1024x396.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo9-300x116.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo9-768x297.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo9-1536x594.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo9.png 1669w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Once you have that, the repository can be cloned as usual:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,7]; title: ; notranslate\" title=\"\">\ndwe@ltdwe:~\/Downloads$ git clone ssh:\/\/git@192.168.122.66\/dwe\/myrepo.git\nCloning into &#039;myrepo&#039;...\nremote: Enumerating objects: 3, done.\nremote: Counting objects: 100% (3\/3), done.\nremote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)\nReceiving objects: 100% (3\/3), done.\ndwe@ltdwe:~\/Downloads$ ls -la myrepo\/\ntotal 4\ndrwxr-xr-x 1 dwe dwe  26 Dec 15 09:41 .\ndrwxr-xr-x 1 dwe dwe 910 Dec 15 09:41 ..\ndrwxr-xr-x 1 dwe dwe 122 Dec 15 09:41 .git\n-rw-r--r-- 1 dwe dwe  16 Dec 15 09:41 README.md\n\n<\/pre><\/div>\n\n\n<p>So far so good, lets create a new &#8220;Action&#8221;. Before we do that, we need to check that actions are enabled for the repository:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"478\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo10-1024x478.png\" alt=\"\" class=\"wp-image-42045\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo10-1024x478.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo10-300x140.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo10-768x359.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo10.png 1381w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"478\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo11-1024x478.png\" alt=\"\" class=\"wp-image-42047\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo11-1024x478.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo11-300x140.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo11-768x359.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo11.png 1381w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>What we need now is a so-called &#8220;Runner&#8221;. A &#8220;Runner&#8221; is a daemon that fetches work from an Forgejo instance, executes and returns back the result. For the &#8220;Runner&#8221; we&#8217;ll use a Debian 13 minimal setup:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@debian13:~$ cat \/etc\/os-release \nPRETTY_NAME=&quot;Debian GNU\/Linux 13 (trixie)&quot;\nNAME=&quot;Debian GNU\/Linux&quot;\nVERSION_ID=&quot;13&quot;\nVERSION=&quot;13 (trixie)&quot;\nVERSION_CODENAME=trixie\nDEBIAN_VERSION_FULL=13.2\nID=debian\nHOME_URL=&quot;https:\/\/www.debian.org\/&quot;\nSUPPORT_URL=&quot;https:\/\/www.debian.org\/support&quot;\nBUG_REPORT_URL=&quot;https:\/\/bugs.debian.org\/&quot;\n<\/pre><\/div>\n\n\n<p>The only requirement is to have Git, curl and jq installed, so:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nroot@debian13:~$ apt install -y git curl jq\nroot@debian13:~$ git --version\ngit version 2.47.3\n<\/pre><\/div>\n\n\n<p>Downloading and installing the runner (this is a copy\/paste from the official <a href=\"https:\/\/forgejo.org\/docs\/latest\/admin\/actions\/runner-installation\/\" target=\"_blank\" rel=\"noreferrer noopener\">documentation<\/a>):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2,3,4,5,6,7,8,9,10,11,18]; title: ; notranslate\" title=\"\">\nroot@debian13:~$ export ARCH=$(uname -m | sed &#039;s\/x86_64\/amd64\/;s\/aarch64\/arm64\/&#039;)\nroot@debian13:~$ echo $ARCH\namd64\nroot@debian13:~$ export RUNNER_VERSION=$(curl -X &#039;GET&#039; https:\/\/data.forgejo.org\/api\/v1\/repos\/forgejo\/runner\/releases\/latest | jq .name -r | cut -c 2-)\nroot@debian13:~$ echo $RUNNER_VERSION\n12.1.2\nroot@debian13:~$ export FORGEJO_URL=&quot;https:\/\/code.forgejo.org\/forgejo\/runner\/releases\/download\/v${RUNNER_VERSION}\/forgejo-runner-${RUNNER_VERSION}-linux-${ARCH}&quot;\nroot@debian13:~$ wget -O forgejo-runner ${FORGEJO_URL}\nroot@debian13:~$ chmod +x forgejo-runner\nroot@debian13:~$ wget -O forgejo-runner.asc ${FORGEJO_URL}.asc\nroot@debian13:~$ gpg --keyserver hkps:\/\/keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710\ngpg: directory &#039;\/root\/.gnupg&#039; created\ngpg: keybox &#039;\/root\/.gnupg\/pubring.kbx&#039; created\ngpg: \/root\/.gnupg\/trustdb.gpg: trustdb created\ngpg: key A4B61A2DC5923710: public key &quot;Forgejo &lt;contact@forgejo.org&gt;&quot; imported\ngpg: Total number processed: 1\ngpg:               imported: 1\nroot@debian13:~$ gpg --verify forgejo-runner.asc forgejo-runner &amp;&amp; echo &quot;\u2713 Verified&quot; || echo &quot;\u2717 Failed&quot;\ngpg: Signature made Sat 06 Dec 2025 11:10:50 PM CET\ngpg:                using EDDSA key 0F527CF93A3D0D0925D3C55ED0A820050E1609E5\ngpg: Good signature from &quot;Forgejo &lt;contact@forgejo.org&gt;&quot; &#x5B;unknown]\ngpg:                 aka &quot;Forgejo Releases &lt;release@forgejo.org&gt;&quot; &#x5B;unknown]\ngpg: WARNING: This key is not certified with a trusted signature!\ngpg:          There is no indication that the signature belongs to the owner.\nPrimary key fingerprint: EB11 4F5E 6C0D C2BC DD18  3550 A4B6 1A2D C592 3710\n     Subkey fingerprint: 0F52 7CF9 3A3D 0D09 25D3  C55E D0A8 2005 0E16 09E5\n\u2713 Verified\n<\/pre><\/div>\n\n\n<p>Move that to a location which is in the PATH:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; highlight: [1,2]; title: ; notranslate\" title=\"\">\nroot@debian13:~$ mv forgejo-runner \/usr\/local\/bin\/forgejo-runner\nroot@debian13:~$ forgejo-runner -v\nforgejo-runner version v12.1.2\n<\/pre><\/div>\n\n\n<p>As usual, a separate user should be created to run a service:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2]; title: ; notranslate\" title=\"\">\nroot@debian13:~$ groupadd runner\nroot@debian13:~$ useradd -g runner -m -s \/bin\/bash runner\n<\/pre><\/div>\n\n\n<p>As the runner will use Docker, Podman or LXC to execute the Actions, we&#8217;ll need to install Podman as well:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2,4,5,7]; title: ; notranslate\" title=\"\">\nroot@debian13:~$ apt install -y podman podman-docker\nroot@debian13:~$ podman --version\npodman version 5.4.2\nroot@debian13:~$ systemctl enable --now podman.socket\nroot@debian13:~$ machinectl shell runner@\nConnected to the local host. Press ^] three times within 1s to exit session.\nrunner@debian13:~$ systemctl --user enable --now podman.socket\nCreated symlink &#039;\/home\/runner\/.config\/systemd\/user\/sockets.target.wants\/podman.socket&#039; \u2192 &#039;\/usr\/lib\/systemd\/user\/podman.socket&#039;.\n<\/pre><\/div>\n\n\n<p>Now we need to register the runner with the Forgejo instance. Before we can do that, we need to fetch the registration token:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"604\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo12-1024x604.png\" alt=\"\" class=\"wp-image-42055\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo12-1024x604.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo12-300x177.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo12-768x453.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo12.png 1325w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"604\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo13-1024x604.png\" alt=\"\" class=\"wp-image-42056\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo13-1024x604.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo13-300x177.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo13-768x453.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo13.png 1325w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Back on the runner, register it:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2]; title: ; notranslate\" title=\"\">\nroot@debian13:~$ su - runner\nrunner@debian13:~$ forgejo-runner register\nINFO Registering runner, arch=amd64, os=linux, version=v12.1.2. \nWARN Runner in user-mode.                         \nINFO Enter the Forgejo instance URL (for example, https:\/\/next.forgejo.org\/): \nhttp:\/\/192.168.122.66:3000\/\nINFO Enter the runner token:                      \nBBE3MbNuTl0Wl52bayiRltJS8ciagRqghe7bXIXE\nINFO Enter the runner name (if set empty, use hostname: debian13): \nrunner1\nINFO Enter the runner labels, leave blank to use the default labels (comma-separated, for example, ubuntu-20.04:docker:\/\/node:20-bookworm,ubuntu-18.04:docker:\/\/node:20-bookworm): \n\nINFO Registering runner, name=runner1, instance=http:\/\/192.168.122.66:3000\/, labels=&#x5B;docker:docker:\/\/data.forgejo.org\/oci\/node:20-bullseye]. \nDEBU Successfully pinged the Forgejo instance server \nINFO Runner registered successfully.              \nrunner@debian13:~$ \n<\/pre><\/div>\n\n\n<p>This will make the new runner visible in the interface, but it is in &#8220;offline&#8221; state:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"604\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo14-1024x604.png\" alt=\"\" class=\"wp-image-42058\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo14-1024x604.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo14-300x177.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo14-768x453.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo14.png 1325w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Time to startup the runner:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,21,22,23]; title: ; notranslate\" title=\"\">\nroot@debian13:~$ cat \/etc\/systemd\/system\/forgejo-runner.service\n&#x5B;Unit]\nDescription=Forgejo Runner\nDocumentation=https:\/\/forgejo.org\/docs\/latest\/admin\/actions\/\nAfter=docker.service\n\n&#x5B;Service]\nExecStart=\/usr\/local\/bin\/forgejo-runner daemon\nExecReload=\/bin\/kill -s HUP $MAINPID\n\n# This user and working directory must already exist\nUser=runner \nWorkingDirectory=\/home\/runner\nRestart=on-failure\nTimeoutSec=0\nRestartSec=10\n\n&#x5B;Install]\nWantedBy=multi-user.target\n\nroot@debian13:~$ systemctl daemon-reload\nroot@debian13:~$ systemctl enable forgejo-runner\nroot@debian13:~$ systemctl start forgejo-runner\n<\/pre><\/div>\n\n\n<p>Once the runner is running, the status in the interface will switch to &#8220;Idle&#8221;:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"604\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo15-1024x604.png\" alt=\"\" class=\"wp-image-42059\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo15-1024x604.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo15-300x177.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo15-768x453.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo15.png 1325w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Ready for our first &#8220;Action&#8221;. Actions are defined as a yaml file in a specific directory of the repository:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2,10,11,15]; title: ; notranslate\" title=\"\">\ndwe@ltdwe:~\/Downloads\/myrepo$ mkdir -p .forgejo\/workflows\/\ndwe@ltdwe:~\/Downloads\/myrepo$ cat .forgejo\/workflows\/demo.yaml\non: &#x5B;push]\njobs:\n  test:\n    runs-on: docker\n    steps:\n      - run: echo All good!\n\ndwe@ltdwe:~\/Downloads\/myrepo$ git add .forgejo\/\ndwe@ltdwe:~\/Downloads\/myrepo$ git commit -m &quot;my first action&quot;\n&#x5B;main f9aa487] my first action\n 1 file changed, 6 insertions(+)\n create mode 100644 .forgejo\/workflows\/demo.yaml\ndwe@ltdwe:~\/Downloads\/myrepo$ git push\n<\/pre><\/div>\n\n\n<p>What that does: Whenever there is a &#8220;push&#8221; to the repository, a job will be executed on the runner with label &#8220;docker&#8221; which doesn&#8217;t do more than printing &#8220;All good!&#8221;. If everything went fine you should see the result under &#8220;Actions&#8221; section of the repository:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"199\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo16-1024x199.png\" alt=\"\" class=\"wp-image-42070\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo16-1024x199.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo16-300x58.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo16-768x149.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo16.png 1392w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"341\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo17-1024x341.png\" alt=\"\" class=\"wp-image-42071\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo17-1024x341.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo17-300x100.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo17-768x256.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo17.png 1489w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Nice, now we&#8217;re ready to do some real work, bust this is the topic for the next post.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last post we&#8217;ve deployed Forgejo on FreeBSD 15. In this post we&#8217;re going to do something with it and that is: We&#8217;ll create a new organization, a new repository, and finally we want to create a simple action. An &#8220;Action&#8221; is what GitLab calls a pipeline. Creating a new organization is just a [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[368,1320],"tags":[3777],"type_dbi":[],"class_list":["post-42007","post","type-post","status-publish","format-standard","hentry","category-development-performance","category-devops","tag-forgejo"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Forgejo: Organizations, Repositories and Actions - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Forgejo: Organizations, Repositories and Actions\" \/>\n<meta property=\"og:description\" content=\"In the last post we&#8217;ve deployed Forgejo on FreeBSD 15. In this post we&#8217;re going to do something with it and that is: We&#8217;ll create a new organization, a new repository, and finally we want to create a simple action. An &#8220;Action&#8221; is what GitLab calls a pipeline. Creating a new organization is just a [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-15T13:13:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-15T13:13:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1904\" \/>\n\t<meta property=\"og:image:height\" content=\"564\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"Forgejo: Organizations, Repositories and Actions\",\"datePublished\":\"2025-12-15T13:13:09+00:00\",\"dateModified\":\"2025-12-15T13:13:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/\"},\"wordCount\":430,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1-1024x303.png\",\"keywords\":[\"Forgejo\"],\"articleSection\":[\"Development &amp; Performance\",\"DevOps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/\",\"name\":\"Forgejo: Organizations, Repositories and Actions - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1-1024x303.png\",\"datePublished\":\"2025-12-15T13:13:09+00:00\",\"dateModified\":\"2025-12-15T13:13:11+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1.png\",\"width\":1904,\"height\":564},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Forgejo: Organizations, Repositories and Actions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Forgejo: Organizations, Repositories and Actions - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/","og_locale":"en_US","og_type":"article","og_title":"Forgejo: Organizations, Repositories and Actions","og_description":"In the last post we&#8217;ve deployed Forgejo on FreeBSD 15. In this post we&#8217;re going to do something with it and that is: We&#8217;ll create a new organization, a new repository, and finally we want to create a simple action. An &#8220;Action&#8221; is what GitLab calls a pipeline. Creating a new organization is just a [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/","og_site_name":"dbi Blog","article_published_time":"2025-12-15T13:13:09+00:00","article_modified_time":"2025-12-15T13:13:11+00:00","og_image":[{"width":1904,"height":564,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1.png","type":"image\/png"}],"author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"Forgejo: Organizations, Repositories and Actions","datePublished":"2025-12-15T13:13:09+00:00","dateModified":"2025-12-15T13:13:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/"},"wordCount":430,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1-1024x303.png","keywords":["Forgejo"],"articleSection":["Development &amp; Performance","DevOps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/","url":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/","name":"Forgejo: Organizations, Repositories and Actions - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1-1024x303.png","datePublished":"2025-12-15T13:13:09+00:00","dateModified":"2025-12-15T13:13:11+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/forgejo1.png","width":1904,"height":564},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/forgejo-organizations-repositories-and-actions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Forgejo: Organizations, Repositories and Actions"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/42007","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=42007"}],"version-history":[{"count":14,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/42007\/revisions"}],"predecessor-version":[{"id":42074,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/42007\/revisions\/42074"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=42007"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=42007"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=42007"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=42007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}