<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Максим Слипенко</title><author><name>Максим Слипенко</name></author><id>https://teletype.in/atom/maks1ms</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/maks1ms?offset=0"></link><link rel="alternate" type="text/html" href="https://blog.maxim.slipenko.com/?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=maks1ms"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/maks1ms?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-12T14:12:31.316Z</updated><entry><id>maks1ms:d0ITltP-0Ci</id><link rel="alternate" type="text/html" href="https://blog.maxim.slipenko.com/d0ITltP-0Ci?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=maks1ms"></link><title>Доступ извне к хостингу у себя дома через Wireguard + Traefik</title><published>2024-01-25T08:40:27.350Z</published><updated>2024-01-25T08:42:56.217Z</updated><summary type="html">В этой статье рассмотрим вариант хостинга у себя дома с доступом извне через Wireguard + Traefik.</summary><content type="html">
  &lt;p id=&quot;czMm&quot;&gt;В этой статье рассмотрим вариант хостинга у себя дома с доступом извне через Wireguard + Traefik.&lt;/p&gt;
  &lt;p id=&quot;VKxy&quot;&gt;Для этой схемы нам понадобится&lt;/p&gt;
  &lt;ul id=&quot;p5AK&quot;&gt;
    &lt;li id=&quot;afYX&quot;&gt;локальный сервер, на котором находится контейнер Traefik&amp;#x27;а&lt;/li&gt;
    &lt;li id=&quot;AksI&quot;&gt;удаленный сервер с публичным IP, через который будет происходить доступ&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h2 id=&quot;nPbA&quot;&gt;Шаг 1. Установка клиента и сервера Wireguard&lt;/h2&gt;
  &lt;p id=&quot;BuXR&quot;&gt;Устанавливаем &lt;strong&gt;клиент&lt;/strong&gt; на &lt;strong&gt;локальный сервер&lt;/strong&gt;, а&lt;strong&gt; сервер&lt;/strong&gt; — на&lt;strong&gt; удаленный. &lt;/strong&gt;Чаще всего это происходит через установку соответствующих пакетов. Для сервера также можно воспользоваться &lt;a href=&quot;https://github.com/angristan/wireguard-install&quot; target=&quot;_blank&quot;&gt;angristan/wireguard-install&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;kYTG&quot;&gt;Далее необходимо узнать адреса сервера и клиента. Это можно сделать таким образом:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;pre id=&quot;51jR&quot;&gt;$ 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
&lt;/pre&gt;
  &lt;/section&gt;
  &lt;p id=&quot;cLqT&quot;&gt;10.66.66.1 — адрес сервера. 10.66.66.2 — клиента.&lt;/p&gt;
  &lt;h2 id=&quot;jUXp&quot;&gt;Шаг 2. Настройка Traefik&lt;/h2&gt;
  &lt;h3 id=&quot;IXGQ&quot;&gt;Шаг 2.1 Настройка сервера&lt;/h3&gt;
  &lt;p id=&quot;FXbJ&quot;&gt;Далее представлен конфигурационные файлы для сервера, который перенаправляет 80, 443 и 22 порты.&lt;/p&gt;
  &lt;p id=&quot;vY8I&quot;&gt;&lt;em&gt;docker-compose.yml&lt;/em&gt;&lt;/p&gt;
  &lt;pre id=&quot;1Co1&quot; data-lang=&quot;yaml&quot;&gt;version: &amp;#x27;3.7&amp;#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:
      - &amp;quot;80:80&amp;quot;
      - &amp;quot;443:443&amp;quot;
      - &amp;quot;22:22&amp;quot;
    volumes:
      - &amp;quot;./traefik.yml:/etc/traefik/traefik.yml:ro&amp;quot;
      - &amp;quot;./acme:/etc/traefik/acme&amp;quot;
      - &amp;quot;./providers:/etc/traefik/providers&amp;quot;
      - &amp;quot;/var/run/docker.sock:/var/run/docker.sock&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;2X2r&quot;&gt;&lt;em&gt;traefik.yml&lt;/em&gt;&lt;/p&gt;
  &lt;pre id=&quot;Oxy3&quot; data-lang=&quot;yaml&quot;&gt;accesslog:
  fields:
    names:
      StartUTC: drop

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

</content></entry></feed>