<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Максим Слипенко</title><generator>teletype.in</generator><description><![CDATA[Максим Слипенко]]></description><image><url>https://img4.teletype.in/files/b9/e5/b9e52c49-c2ef-4904-9d35-7f92d52c4e23.png</url><title>Максим Слипенко</title><link>https://blog.maxim.slipenko.com/</link></image><link>https://blog.maxim.slipenko.com/?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=maks1ms</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/maks1ms?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/maks1ms?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sun, 12 Apr 2026 14:18:05 GMT</pubDate><lastBuildDate>Sun, 12 Apr 2026 14:18:05 GMT</lastBuildDate><item><guid isPermaLink="true">https://blog.maxim.slipenko.com/d0ITltP-0Ci</guid><link>https://blog.maxim.slipenko.com/d0ITltP-0Ci?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=maks1ms</link><comments>https://blog.maxim.slipenko.com/d0ITltP-0Ci?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=maks1ms#comments</comments><dc:creator>maks1ms</dc:creator><title>Доступ извне к хостингу у себя дома через Wireguard + Traefik</title><pubDate>Thu, 25 Jan 2024 08:40:27 GMT</pubDate><description><![CDATA[В этой статье рассмотрим вариант хостинга у себя дома с доступом извне через Wireguard + Traefik.]]></description><content:encoded><![CDATA[
  <p id="czMm">В этой статье рассмотрим вариант хостинга у себя дома с доступом извне через Wireguard + Traefik.</p>
  <p id="VKxy">Для этой схемы нам понадобится</p>
  <ul id="p5AK">
    <li id="afYX">локальный сервер, на котором находится контейнер Traefik&#x27;а</li>
    <li id="AksI">удаленный сервер с публичным IP, через который будет происходить доступ</li>
  </ul>
  <h2 id="nPbA">Шаг 1. Установка клиента и сервера Wireguard</h2>
  <p id="BuXR">Устанавливаем <strong>клиент</strong> на <strong>локальный сервер</strong>, а<strong> сервер</strong> — на<strong> удаленный. </strong>Чаще всего это происходит через установку соответствующих пакетов. Для сервера также можно воспользоваться <a href="https://github.com/angristan/wireguard-install" target="_blank">angristan/wireguard-install</a>.</p>
  <p id="kYTG">Далее необходимо узнать адреса сервера и клиента. Это можно сделать таким образом:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <pre id="51jR">$ sudo cat /etc/wireguard/wg0.conf
[Interface]
Address = 10.66.66.1/24,fd42:42:42::1/64
ListenPort = 51820
PrivateKey = ...

### Client ...
[Peer]
PublicKey = ...
PresharedKey = ...
AllowedIPs = 10.66.66.2/32
</pre>
  </section>
  <p id="cLqT">10.66.66.1 — адрес сервера. 10.66.66.2 — клиента.</p>
  <h2 id="jUXp">Шаг 2. Настройка Traefik</h2>
  <h3 id="IXGQ">Шаг 2.1 Настройка сервера</h3>
  <p id="FXbJ">Далее представлен конфигурационные файлы для сервера, который перенаправляет 80, 443 и 22 порты.</p>
  <p id="vY8I"><em>docker-compose.yml</em></p>
  <pre id="1Co1" data-lang="yaml">version: &#x27;3.7&#x27;

networks:
  default:
    name: traefik_net
    external: true

services:
  traefik:
    image: traefik:v2.10.7
    container_name: traefik
    restart: unless-stopped
    environment:
      - TZ=Europe/Moscow
    ports:
      - &quot;80:80&quot;
      - &quot;443:443&quot;
      - &quot;22:22&quot;
    volumes:
      - &quot;./traefik.yml:/etc/traefik/traefik.yml:ro&quot;
      - &quot;./acme:/etc/traefik/acme&quot;
      - &quot;./providers:/etc/traefik/providers&quot;
      - &quot;/var/run/docker.sock:/var/run/docker.sock&quot;</pre>
  <p id="2X2r"><em>traefik.yml</em></p>
  <pre id="Oxy3" data-lang="yaml">accesslog:
  fields:
    names:
      StartUTC: drop

entryPoints:
  ssh:
    address: &quot;:22&quot;
  web:
    address: &quot;:80&quot;
  websecure:
    address: &quot;:443&quot;
    
providers:
  docker:
    network: traefik_net
    exposedByDefault: false
  file:
    directory: /etc/traefik/providers</pre>
  <p id="96Zt"><em>providers/config.yaml</em></p>
  <pre id="zXuh" data-lang="yaml">tcp:
  {{ $ip := &quot;10.66.66.2&quot; }}
  {{ $entrypointsPorts := dict
        &quot;web&quot; 80
        &quot;websecure&quot; 443
        &quot;ssh&quot; 22
  }}
  {{ $entrypoints := list }}
  {{ range $key, $_ := $entrypointsPorts }}
    {{ $entrypoints = append $entrypoints $key }}
  {{ end }}
  routers:
    {{range $entrypoints }}
    local_traefik_{{ . }}:
      rule: &quot;HostSNI(&#x60;*&#x60;)&quot;
      entrypoints:
      - &quot;{{ . }}&quot;
      service: local_traefik_{{ . }}
    {{end}}
  services:
    {{range $entrypoints }}
    local_traefik_{{ . }}:
      loadBalancer:
        proxyProtocol:
          version: 2
        servers:
        - address: {{ $ip }}:{{ get $entrypointsPorts . }}
    {{end}}</pre>
  <h3 id="5AOE">Шаг 2. Настройка клиента</h3>
  <p id="eUvQ"><em>docker-compose.yml</em></p>
  <pre id="hfVa" data-lang="yaml">version: &#x27;3.7&#x27;

networks:
  default:
    name: traefik_net
    external: true

services:
  traefik:
    image: traefik:v2.10.7
    container_name: traefik
    environment:
      - TZ=Europe/Moscow
    ports:
      - 80:80
      - 443:443
      - 22:22
    restart: unless-stopped
    volumes:
      - ./traefik.yml:/etc/traefik/traefik.yml:ro
      - ./acme:/etc/traefik/acme
      - ./providers:/etc/traefik/providers
      - /var/run/docker.sock:/var/run/docker.sock</pre>
  <p id="VibF"><em>providers/config.yaml</em></p>
  <pre id="eENk" data-lang="yaml">accesslog:
  fields:
    names:
      StartUTC: drop

...

entryPoints:
  ssh:
    address: :22
    proxyProtocol:
      trustedIPs:
      - 10.66.66.1
  web:
    address: :80
    http:
      redirections:
        entryPoint:
          permanent: true
          scheme: https
          to: websecure
    proxyProtocol:
      trustedIPs:
      - 10.66.66.1
  websecure:
    address: :443
    proxyProtocol:
      trustedIPs:
      - 10.66.66.1
providers:
  docker:
    exposedByDefault: false
    network: traefik_net
  file:
    directory: /etc/traefik/providers
</pre>

]]></content:encoded></item></channel></rss>