<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Dedinit()</title>
    <link>https://wf.gelonet.ru/kpa39l/</link>
    <description>Техноблог обычного жителя маленького города</description>
    <pubDate>Fri, 01 May 2026 23:57:14 +0300</pubDate>
    <item>
      <title>Portainer: развертывание и решение ошибок подключения к Docker</title>
      <link>https://wf.gelonet.ru/kpa39l/portainer-razvertyvanie-i-reshenie-oshibok-podkliucheniia-k-docker</link>
      <description>&lt;![CDATA[Portainer: развертывание и решение ошибок подключения к Docker&#xA;&#xA;Поделюсь опытом настройки Portainer — удобного веб-интерфейса для управления Docker. Столкнулся с типичными ошибками и нашел рабочие решения.&#xA;&#xA;Типичные проблемы при запуске:&#xA;&#xA;    &#34;The environment named Docker is unreachable&#34;&#xA;&#xA;    &#34;client version 1.42 is too old. Minimum supported API version is 1.44&#34;&#xA;&#xA;🔧 Решения:&#xA;&#xA;Права доступа к Docker socket&#xA;Проверяем права&#xA;ls -l /var/run/docker.sock&#xA;Если не хватает прав:&#xA;sudo chmod 666 /var/run/docker.sock&#xA;ИЛИ добавляем пользователя в группу docker&#xA;sudo usermod -aG docker $USER&#xA;Перезагружаем сессию&#xA;newgrp docker&#xA;&#xA;Совместимость с Docker Engine 29+&#xA;Основная проблема — несовместимость новых версий Docker с некоторыми версиями Portainer.&#xA;&#xA;Рабочий docker-compose.yml:&#xA;services:&#xA;  portainer:&#xA;    image: portainer/portainer-ce:2.20.2  # Проверенная версия&#xA;    container_name: portainer&#xA;    restart: unless-stopped&#xA;    volumes:&#xA;      /var/run/docker.sock:/var/run/docker.sock:ro&#xA;      ./portainer-data:/data&#xA;    ports:&#xA;      &#34;9080:9080&#34;&#xA;      &#34;9443:9443&#34;&#xA;&#xA;💡 Важные моменты:&#xA;&#xA;    Версия 2.20.2 стабильно работает с Docker 29+&#xA;    Логи можно посмотреть: &#xA;📊 Проверка работоспособности:&#xA;&#xA;docker ps&#xA;docker logs portainer&#xA;В браузере: https://сервер:9443&#xA;Теперь Portainer должен работать стабильно! 🎉&#xA;&#xA;#docker #portainer #devops &#xA;&#xA;Мой телеграм канал https://t.me/dedinit/]]&gt;</description>
      <content:encoded><![CDATA[<p>Portainer: развертывание и решение ошибок подключения к Docker</p>

<p>Поделюсь опытом настройки Portainer — удобного веб-интерфейса для управления Docker. Столкнулся с типичными ошибками и нашел рабочие решения.</p>

<p>Типичные проблемы при запуске:</p>

<p>    “The environment named Docker is unreachable”</p>

<p>    “client version 1.42 is too old. Minimum supported API version is 1.44”</p>

<p>🔧 Решения:</p>
<ol><li><p>Права доступа к Docker socket</p>

<pre><code class="language-bash"># Проверяем права
ls -l /var/run/docker.sock
# Если не хватает прав:
sudo chmod 666 /var/run/docker.sock
# ИЛИ добавляем пользователя в группу docker
sudo usermod -aG docker $USER
# Перезагружаем сессию
newgrp docker
</code></pre></li>

<li><p>Совместимость с Docker Engine 29+
Основная проблема — несовместимость новых версий Docker с некоторыми версиями Portainer.</p></li></ol>

<p>Рабочий docker-compose.yml:</p>

<pre><code class="language-yaml">services:
  portainer:
    image: portainer/portainer-ce:2.20.2  # Проверенная версия
    container_name: portainer
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./portainer-data:/data
    ports:
      - &#34;9080:9080&#34;
      - &#34;9443:9443&#34;
</code></pre>

<p>💡 Важные моменты:</p>

<p>    Версия 2.20.2 стабильно работает с Docker 29+
    Логи можно посмотреть: <code>docker logs portainer</code></p>

<p>📊 Проверка работоспособности:</p>

<pre><code class="language-bash">
docker ps
docker logs portainer
# В браузере: https://сервер:9443
</code></pre>

<p>Теперь Portainer должен работать стабильно! 🎉</p>

<p><a href="/kpa39l/tag:docker" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">docker</span></a> <a href="/kpa39l/tag:portainer" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">portainer</span></a> <a href="/kpa39l/tag:devops" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">devops</span></a></p>

<p>Мой телеграм канал <a href="https://t.me/dedinit" rel="nofollow">https://t.me/dedinit/</a></p>
]]></content:encoded>
      <guid>https://wf.gelonet.ru/kpa39l/portainer-razvertyvanie-i-reshenie-oshibok-podkliucheniia-k-docker</guid>
      <pubDate>Sat, 22 Nov 2025 17:08:49 +0000</pubDate>
    </item>
    <item>
      <title>Полная инструкция: Установка WriteFreely на wf.gelonet.ru (Debian 13) </title>
      <link>https://wf.gelonet.ru/kpa39l/polnaia-instruktsiia-ustanovka-writefreely-na-wf-gelonet-ru-debian-13</link>
      <description>&lt;![CDATA[Предполагается, что у вас есть: &#xA;VPS с Debian 13,&#xA;Доступ к серверу через sudo,&#xA;Доменное имя gelonet.ru, зарегистрированное у любого регистратора.&#xA;         &#xA;🔹 Шаг 0: Настройка DNS (в панели регистратора) &#xA;Зайдите в панель управления вашего регистратора домена (например, reg.ru, nic.ru, Beget и т.д.). &#xA;&#xA;Найдите раздел «Управление DNS» или «Зоны DNS» для домена gelonet.ru. &#xA;&#xA;Создайте A-запись для поддомена: &#xA;    &#xA;Имя (host): wf&#xA;Тип: A&#xA;Значение (IP): [вашпубличныйIPсервера]&#xA;TTL: 300 или по умолчанию&#xA; &#xA; &#xA;Пример: &#xA;wf.gelonet.ru → 5.129.217.146&#xA; &#xA; &#xA;Сохраните изменения.&#xA;⏱ DNS может обновиться от нескольких секунд до 10–30 минут. Проверить можно командой: &#xA;dig +short wf.gelonet.ru&#xA;или&#xA;nslookup wf.gelonet.ru&#xA;Результат должен совпадать с IP вашего сервера. &#xA; &#xA;🔹 Шаг 1: Подготовка сервера &#xA;&#xA;Подключитесь к серверу по SSH и выполните: &#xA;Обновление системы&#xA;sudo apt update &amp;&amp; sudo apt upgrade -y&#xA;&#xA;Установка необходимых пакетов&#xA;sudo apt install -y nginx curl tar ufw&#xA; &#xA; &#xA;🔹 Шаг 2: Настройка фаервола (UFW) &#xA;&#xA;Разрешите SSH, HTTP и HTTPS: &#xA;sudo ufw allow OpenSSH&#xA;sudo ufw allow &#39;Nginx Full&#39;  # открывает 80/tcp и 443/tcp&#xA;sudo ufw enable&#xA; &#xA;Проверка: &#xA;sudo ufw status verbose&#xA; &#xA;💡 Порт 80 нужен для получения сертификата, порт 443 — для доступа к сайту по HTTPS. &#xA;     &#xA;🔹 Шаг 3: Установка WriteFreely &#xA;Создаём директорию&#xA;sudo mkdir -p /var/www/writefreely&#xA;cd /var/www/writefreely&#xA;&#xA;Скачиваем последнюю версию (v0.16.0 на момент написания)&#xA;sudo curl -L https://github.com/writefreely/writefreely/releases/download/v0.16.0/writefreely0.16.0linuxamd64.tar.gz -o writefreely.tar.gz&#xA;&#xA;Распаковываем&#xA;sudo tar -xzf writefreely.tar.gz --strip-components=1&#xA;sudo rm writefreely.tar.gz&#xA;&#xA;Назначаем права&#xA;sudo chown -R www-data:www-data /var/www/writefreely&#xA; &#xA; &#xA;🔹 Шаг 4: Настройка WriteFreely &#xA;sudo -u www-data /var/www/writefreely/writefreely config start&#xA; &#xA;Ответьте на вопросы: &#xA;    Environment: Production, behind reverse proxy  &#xA;    Server address: localhost:8080 (оставьте по умолчанию)  &#xA;    Database: SQLite (проще для старта) или MySQL (если настроена БД)  &#xA;    Site name: например, Мой блог  &#xA;    Admin username: ваш email  &#xA;    Admin password: надёжный пароль  &#xA;    Остальное — по желанию&#xA;Сгенерируйте ключи шифрования: &#xA;sudo -u www-data /var/www/writefreely/writefreely keys generate&#xA; &#xA; &#xA;🔹 Шаг 5: Создание systemd-сервиса &#xA;sudo tee /etc/systemd/system/writefreely.service &lt;&lt;EOF&#xA;[Unit]&#xA;Description=WriteFreely Instance&#xA;After=network.target&#xA;&#xA;[Service]&#xA;Type=simple&#xA;User=www-data&#xA;Group=www-data&#xA;WorkingDirectory=/var/www/writefreely&#xA;ExecStart=/var/www/writefreely/writefreely&#xA;Restart=always&#xA;RestartSec=10&#xA;&#xA;[Install]&#xA;WantedBy=multi-user.target&#xA;EOF&#xA; &#xA;&#xA;Запустите сервис: &#xA;sudo systemctl daemon-reload&#xA;sudo systemctl enable --now writefreely&#xA; &#xA;Проверка: &#xA;sudo systemctl status writefreely&#xA;  &#xA;🔹 Шаг 6: Настройка Nginx как обратного прокси &#xA;&#xA;Создайте конфиг (замените wf.gelonet.ru на ваш поддомен): &#xA;sudo tee /etc/nginx/sites-available/writefreely &lt;&lt;EOF&#xA;server {&#xA;    listen 80;&#xA;    listen [::]:80;&#xA;    servername wf.gelonet.ru;&#xA;&#xA;    gzip on;&#xA;    gziptypes&#xA;      application/javascript&#xA;      application/x-javascript&#xA;      application/json&#xA;      application/rss+xml&#xA;      application/xml&#xA;      image/svg+xml&#xA;      image/x-icon&#xA;      application/vnd.ms-fontobject&#xA;      application/font-sfnt&#xA;      text/css&#xA;      text/plain;&#xA;    gzipminlength 256;&#xA;    gzipcomplevel 5;&#xA;    gzipvary on;&#xA;&#xA;    location ~ ^/.well-known/(webfinger|nodeinfo|host-meta) {&#xA;        proxypass http://127.0.0.1:8080;&#xA;        proxysetheader Host \$host;&#xA;        proxysetheader X-Real-IP \$remoteaddr;&#xA;        proxysetheader X-Forwarded-For \$proxyaddxforwardedfor;&#xA;        proxyredirect off;&#xA;    }&#xA;&#xA;    location ~ ^/(css|img|js|fonts)/ {&#xA;        root /var/www/writefreely/static;&#xA;        expires 12M;&#xA;    }&#xA;&#xA;    location / {&#xA;        proxypass http://127.0.0.1:8080;&#xA;        proxysetheader Host \$host;&#xA;        proxysetheader X-Real-IP \$remoteaddr;&#xA;        proxysetheader X-Forwarded-For \$proxyaddxforwardedfor;&#xA;        proxy_redirect off;&#xA;    }&#xA;}&#xA;EOF&#xA;&#xA;Активируйте сайт: &#xA;sudo ln -s /etc/nginx/sites-available/writefreely /etc/nginx/sites-enabled/&#xA;sudo nginx -t &amp;&amp; sudo systemctl reload nginx&#xA; &#xA; &#xA;🔹 Шаг 7: Получение SSL-сертификата от Let’s Encrypt &#xA;&#xA;Установите Certbot: &#xA;sudo apt install -y certbot python3-certbot-nginx&#xA; &#xA;&#xA;Получите сертификат: &#xA;sudo certbot --nginx -d wf.gelonet.ru&#xA; &#xA;Ответьте N на вопрос о передаче email EFF (если не хотите).&#xA;Certbot автоматически:&#xA;        запросит сертификат,&#xA;        обновит конфиг Nginx для HTTPS,&#xA;        настроит автоматическое обновление.&#xA;         &#xA;     📌 Важно: порты 80 и 443 должны быть открыты в UFW и облачном фаерволе! &#xA;     &#xA;&#xA; &#xA;🔹 Шаг 8: Проверка работы &#xA;&#xA;Откройте в браузере свой поддомен, у меня это: &#xA;https://wf.gelonet.ru&#xA; &#xA; &#xA;Вы должны увидеть главную страницу WriteFreely.&#xA;Админка доступна по: &#xA;https://wf.gelonet.ru/admin&#xA; &#xA; &#xA; &#xA;🔹 Шаг 9: Проверка автопродления сертификата &#xA;&#xA;Certbot уже настроил таймер, но можно проверить вручную: &#xA;sudo certbot renew --dry-run&#xA; &#xA;Если команда завершится без ошибок — всё в порядке. &#xA; &#xA;🧰 Полезные команды &#xA;&#xA;Логи WriteFreely:&#xA;sudo journalctl -u writefreely -f&#xA; &#xA;Логи Nginx:&#xA; sudo tail -f /var/log/nginx/error.log&#xA;   &#xA;Обновление WriteFreely:&#xA;        Остановите сервис: sudo systemctl stop writefreely&#xA;        Замените бинарник (повторите Шаг 3)&#xA;        Запустите: sudo systemctl start writefreely&#xA;         &#xA;✅ Готово! &#xA;&#xA;Ваш персональный блог на WriteFreely работает по адресу:&#xA;👉 https://wf.gelonet.ru  &#xA;&#xA;Теперь вы полностью контролируете свой контент, без зависимости от сторонних платформ.  &#xA;&#xA;Мой телеграм канал https://t.me/dedinit/]]&gt;</description>
      <content:encoded><![CDATA[<p>Предполагается, что у вас есть:
VPS с Debian 13,
Доступ к серверу через sudo,
Доменное имя gelonet.ru, зарегистрированное у любого регистратора.</p>

<h2 id="шаг-0-настройка-dns-в-панели-регистратора">🔹 Шаг 0: Настройка DNS (в панели регистратора)</h2>

<p>Зайдите в панель управления вашего регистратора домена (например, reg.ru, nic.ru, Beget и т.д.).</p>

<p>Найдите раздел «Управление DNS» или «Зоны DNS» для домена gelonet.ru.</p>

<p>Создайте A-запись для поддомена:</p>

<p>Имя (host): wf
Тип: A
Значение (IP): [ваш<em>публичный</em>IP_сервера]
TTL: 300 или по умолчанию</p>

<p>Пример:
wf.gelonet.ru → 5.129.217.146</p>

<p>Сохраните изменения.
⏱ DNS может обновиться от нескольких секунд до 10–30 минут. Проверить можно командой:</p>

<pre><code class="language-bash">dig +short wf.gelonet.ru
# или
nslookup wf.gelonet.ru
</code></pre>

<p>Результат должен совпадать с IP вашего сервера.</p>

<h2 id="шаг-1-подготовка-сервера">🔹 Шаг 1: Подготовка сервера</h2>

<p>Подключитесь к серверу по SSH и выполните:</p>

<pre><code class="language-bash"># Обновление системы
sudo apt update &amp;&amp; sudo apt upgrade -y

# Установка необходимых пакетов
sudo apt install -y nginx curl tar ufw
</code></pre>

<h2 id="шаг-2-настройка-фаервола-ufw">🔹 Шаг 2: Настройка фаервола (UFW)</h2>

<p>Разрешите SSH, HTTP и HTTPS:</p>

<pre><code class="language-bash">sudo ufw allow OpenSSH
sudo ufw allow &#39;Nginx Full&#39;  # открывает 80/tcp и 443/tcp
sudo ufw enable
</code></pre>

<p>Проверка:</p>

<pre><code class="language-bash">sudo ufw status verbose
</code></pre>

<p>💡 Порт 80 нужен для получения сертификата, порт 443 — для доступа к сайту по HTTPS.</p>

<h2 id="шаг-3-установка-writefreely">🔹 Шаг 3: Установка WriteFreely</h2>

<pre><code class="language-bash"># Создаём директорию
sudo mkdir -p /var/www/writefreely
cd /var/www/writefreely

# Скачиваем последнюю версию (v0.16.0 на момент написания)
sudo curl -L https://github.com/writefreely/writefreely/releases/download/v0.16.0/writefreely_0.16.0_linux_amd64.tar.gz -o writefreely.tar.gz

# Распаковываем
sudo tar -xzf writefreely.tar.gz --strip-components=1
sudo rm writefreely.tar.gz

# Назначаем права
sudo chown -R www-data:www-data /var/www/writefreely
</code></pre>

<h2 id="шаг-4-настройка-writefreely">🔹 Шаг 4: Настройка WriteFreely</h2>

<pre><code class="language-bash">sudo -u www-data /var/www/writefreely/writefreely config start
</code></pre>

<p>Ответьте на вопросы:</p>

<pre><code>    Environment: Production, behind reverse proxy  
    Server address: localhost:8080 (оставьте по умолчанию)  
    Database: SQLite (проще для старта) или MySQL (если настроена БД)  
    Site name: например, Мой блог  
    Admin username: ваш email  
    Admin password: надёжный пароль  
    Остальное — по желанию
</code></pre>

<p>Сгенерируйте ключи шифрования:</p>

<pre><code class="language-bash">sudo -u www-data /var/www/writefreely/writefreely keys generate
</code></pre>

<h2 id="шаг-5-создание-systemd-сервиса">🔹 Шаг 5: Создание systemd-сервиса</h2>

<pre><code class="language-bash">sudo tee /etc/systemd/system/writefreely.service &lt;&lt;EOF
[Unit]
Description=WriteFreely Instance
After=network.target

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/var/www/writefreely
ExecStart=/var/www/writefreely/writefreely
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF
</code></pre>

<p>Запустите сервис:</p>

<pre><code class="language-bash">sudo systemctl daemon-reload
sudo systemctl enable --now writefreely
</code></pre>

<p>Проверка:</p>

<pre><code class="language-bash">sudo systemctl status writefreely
</code></pre>

<h2 id="шаг-6-настройка-nginx-как-обратного-прокси">🔹 Шаг 6: Настройка Nginx как обратного прокси</h2>

<p>Создайте конфиг (замените wf.gelonet.ru на ваш поддомен):</p>

<pre><code class="language-bash">sudo tee /etc/nginx/sites-available/writefreely &lt;&lt;EOF
server {
    listen 80;
    listen [::]:80;
    server_name wf.gelonet.ru;

    gzip on;
    gzip_types
      application/javascript
      application/x-javascript
      application/json
      application/rss+xml
      application/xml
      image/svg+xml
      image/x-icon
      application/vnd.ms-fontobject
      application/font-sfnt
      text/css
      text/plain;
    gzip_min_length 256;
    gzip_comp_level 5;
    gzip_vary on;

    location ~ ^/.well-known/(webfinger|nodeinfo|host-meta) {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_redirect off;
    }

    location ~ ^/(css|img|js|fonts)/ {
        root /var/www/writefreely/static;
        expires 12M;
    }

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_redirect off;
    }
}
EOF
</code></pre>

<p>Активируйте сайт:</p>

<pre><code class="language-bash">sudo ln -s /etc/nginx/sites-available/writefreely /etc/nginx/sites-enabled/
sudo nginx -t &amp;&amp; sudo systemctl reload nginx
</code></pre>

<h2 id="шаг-7-получение-ssl-сертификата-от-let-s-encrypt">🔹 Шаг 7: Получение SSL-сертификата от Let’s Encrypt</h2>

<p>Установите Certbot:</p>

<pre><code class="language-bash">sudo apt install -y certbot python3-certbot-nginx
</code></pre>

<p>Получите сертификат:</p>

<pre><code class="language-bash">sudo certbot --nginx -d wf.gelonet.ru
</code></pre>

<p>Ответьте N на вопрос о передаче email EFF (если не хотите).
Certbot автоматически:
        запросит сертификат,
        обновит конфиг Nginx для HTTPS,
        настроит автоматическое обновление.</p>

<p>     📌 Важно: порты 80 и 443 должны быть открыты в UFW и облачном фаерволе!</p>

<h2 id="шаг-8-проверка-работы">🔹 Шаг 8: Проверка работы</h2>

<p>Откройте в браузере свой поддомен, у меня это:
<a href="https://wf.gelonet.ru" rel="nofollow">https://wf.gelonet.ru</a></p>

<p>Вы должны увидеть главную страницу WriteFreely.
Админка доступна по:
<a href="https://wf.gelonet.ru/admin" rel="nofollow">https://wf.gelonet.ru/admin</a></p>

<h2 id="шаг-9-проверка-автопродления-сертификата">🔹 Шаг 9: Проверка автопродления сертификата</h2>

<p>Certbot уже настроил таймер, но можно проверить вручную:</p>

<pre><code class="language-bash">sudo certbot renew --dry-run
</code></pre>

<p>Если команда завершится без ошибок — всё в порядке.</p>

<h2 id="полезные-команды">🧰 Полезные команды</h2>

<p>Логи WriteFreely:</p>

<pre><code class="language-bash">sudo journalctl -u writefreely -f
</code></pre>

<p>Логи Nginx:</p>

<pre><code class="language-bash"> sudo tail -f /var/log/nginx/error.log
</code></pre>

<p>Обновление WriteFreely:
        Остановите сервис: sudo systemctl stop writefreely
        Замените бинарник (повторите Шаг 3)
        Запустите: sudo systemctl start writefreely</p>

<p>✅ Готово!</p>

<p>Ваш персональный блог на WriteFreely работает по адресу:
👉 <a href="https://wf.gelonet.ru" rel="nofollow">https://wf.gelonet.ru</a></p>

<p>Теперь вы полностью контролируете свой контент, без зависимости от сторонних платформ.</p>

<p>Мой телеграм канал <a href="https://t.me/dedinit" rel="nofollow">https://t.me/dedinit/</a></p>
]]></content:encoded>
      <guid>https://wf.gelonet.ru/kpa39l/polnaia-instruktsiia-ustanovka-writefreely-na-wf-gelonet-ru-debian-13</guid>
      <pubDate>Sun, 02 Nov 2025 15:57:39 +0000</pubDate>
    </item>
  </channel>
</rss>