<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Traefik on Alwaldend</title>
		<link>https://alwaldend.com/tags/traefik/</link>
		<description>Recent content in Traefik on Alwaldend</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<atom:link href="https://alwaldend.com/tags/traefik/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Host Bot</title>
				<link>https://alwaldend.com/docs/users/simeonwarren/host_bot/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://alwaldend.com/docs/users/simeonwarren/host_bot/</guid>
				<description>&lt;p&gt;Host Bot runs Traefik with mTLS in front of T3 Code. The host firewall blocks&#xA;direct external access to T3 Code and accepts new connections only on SSH,&#xA;HTTP, and HTTPS ports.&lt;/p&gt;&#xA;&lt;p&gt;T3 Code controls permissions per thread. Its &lt;strong&gt;Auto&lt;/strong&gt; mode maps to Codex&#xA;Auto-review. The managed Codex requirements allow read-only and &lt;code&gt;host-bot&lt;/code&gt;&#xA;permissions with on-request approvals, so threads cannot select &lt;strong&gt;Full&#xA;access&lt;/strong&gt; or disable approvals. The requirements file only allowlists the&#xA;&lt;code&gt;host-bot&lt;/code&gt; profile; it must not define the profile because T3 Code supplies a&#xA;per-thread config layer with the same name, and Codex rejects profiles defined&#xA;by both requirements and config. The normal and isolated provider configs&#xA;define &lt;code&gt;host-bot&lt;/code&gt; with workspace writes, public command-network access, and&#xA;write access to the Bazel cache and Bazelisk directories while keeping local&#xA;network binding and loopback connections available for Bazel servers. Other&#xA;private network targets remain blocked. T3 Code must select that profile for&#xA;the thread. Hosted web search is not restricted by this role.&lt;/p&gt;</description>
			</item>
			<item>
				<title>ingress</title>
				<link>https://alwaldend.com/docs/infra/ingress/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://alwaldend.com/docs/infra/ingress/</guid>
				<description>&lt;h2 id=&#34;run-ansible&#34;&gt;Run ansible&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#run-ansible&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel run //infra/ingress/ansible&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Services in &lt;code&gt;traefik_services&lt;/code&gt; must use a backend &lt;code&gt;target&lt;/code&gt; that resolves from&#xA;the ingress hosts without resolving back to ingress. Define a dedicated&#xA;site-local address, conventionally prefixed with &lt;code&gt;dc1.&lt;/code&gt;, in the owning&#xA;service&amp;rsquo;s DNS configuration and use that address as the target.&lt;/p&gt;&#xA;&lt;h2 id=&#34;apply-terraform&#34;&gt;Apply terraform&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#apply-terraform&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel run //infra/ingress/tf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;update-signed-image-url&#34;&gt;Update signed image url&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#update-signed-image-url&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Create a signed url: &lt;a href=&#34;https://yandex.cloud/ru/docs/storage/operations/objects/link-for-download&#34;&gt;https://yandex.cloud/ru/docs/storage/operations/objects/link-for-download&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Update the secret: &lt;code&gt;alwaldend.com/vault1/approles/src_infra_ingress/image&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;recreate-vms&#34;&gt;Recreate VMs&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#recreate-vms&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel run infra/ingress/tf -- -replace &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;yandex_compute_disk.vpc[&amp;#34;*&amp;#34;]&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;regenerate-wireguard-keys&#34;&gt;Regenerate wireguard keys&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#regenerate-wireguard-keys&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Regenerate private and public keys:&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wg genkey | tee host1.privatekey.txt | wg pubkey &amp;gt;host1.publickey.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wg genkey | tee host2.privatekey.txt | wg pubkey &amp;gt;host2.publickey.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wg genkey | tee router.privatekey.txt | wg pubkey &amp;gt;router.publickey.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat - &amp;gt;data.json &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;&amp;lt;EOF&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  &amp;#34;wg_public_keys&amp;#34;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;host1&amp;#34;: &amp;#34;$(cat host1.publickey.txt)&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;host2&amp;#34;: &amp;#34;$(cat host2.publickey.txt)&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;router&amp;#34;: &amp;#34;$(cat router.publickey.txt)&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  &amp;#34;wg_private_keys&amp;#34;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;host1&amp;#34;: &amp;#34;$(cat host1.privatekey.txt)&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;host2&amp;#34;: &amp;#34;$(cat host2.privatekey.txt)&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;router&amp;#34;: &amp;#34;$(cat router.privatekey.txt)&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  &amp;#34;wg_preshared_keys&amp;#34;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;host1&amp;#34;: &amp;#34;$(openssl rand 32 | base64)&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;host2&amp;#34;: &amp;#34;$(openssl rand 32 | base64)&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;EOF&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bazel run infra/ingress:vault.kv_put -- -format json alwaldend.com/vault1/approles/src_infra_ingress/wireguard &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;PWD&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/data.json&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rm data.json *.privatekey.txt *.publickey.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>io_traefik_traefik</title>
				<link>https://alwaldend.com/docs/third_party/io_traefik_traefik/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://alwaldend.com/docs/third_party/io_traefik_traefik/</guid>
				<description>&lt;h2 id=&#34;links&#34;&gt;Links&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#links&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Repo: &lt;a href=&#34;https://github.com/traefik/traefik&#34;&gt;https://github.com/traefik/traefik&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Traefik</title>
				<link>https://alwaldend.com/docs/tools/traefik/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://alwaldend.com/docs/tools/traefik/</guid>
				<description>&lt;h2 id=&#34;links&#34;&gt;Links&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#links&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Repo: &lt;a href=&#34;https://github.com/traefik/traefik&#34;&gt;https://github.com/traefik/traefik&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
	</channel>
</rss>
