diff --git a/content/posts/hugo-error-fix/index.md b/content/posts/hugo-error-fix/index.md
index 246a666..5dcd7fd 100644
--- a/content/posts/hugo-error-fix/index.md
+++ b/content/posts/hugo-error-fix/index.md
@@ -10,7 +10,7 @@ categories: ["Разработка", "Hugo"]
При запуске команды `hugo server` возникала ошибка:
-```
+```shell
ERROR html/template:_partials/head.html:153:13: no such template "_internal/google_analytics.html"
```
@@ -18,7 +18,7 @@ ERROR html/template:_partials/head.html:153:13: no such template "_internal/goog
### 1. Исправление ошибки с Google Analytics
-В новых версиях Hugo внутренний шаблон `_internal/google_analytics.html` был удален.
+В новых версиях Hugo внутренний шаблон `_internal/google_analytics.html` был удален.
Необходимо заменить его использование на частичный шаблон из темы PaperMod:
```html
@@ -31,29 +31,30 @@ ERROR html/template:_partials/head.html:153:13: no such template "_internal/goog
### 2. Обновление шаблона Google Analytics
-В шаблоне `themes/PaperMod/layouts/partials/google_analytics.html` также
-потребовалось обновить способ получения ID Google Analytics, так как в новых
-версиях Hugo поле `.Site.GoogleAnalytics` было заменено на
+В шаблоне `themes/PaperMod/layouts/partials/google_analytics.html` также
+потребовалось обновить способ получения ID Google Analytics, так как в новых
+версиях Hugo поле `.Site.GoogleAnalytics` было заменено на
`.Site.Config.Services.GoogleAnalytics.ID`.
### 3. Исправление ошибок с устаревшим .Site.Social
-В шаблонах `twitter_cards.html` и `opengraph.html` использовались устаревшие
+В шаблонах `twitter_cards.html` и `opengraph.html` использовались устаревшие
обращения к `.Site.Social`, которые были заменены на `.Site.Params.Social`.
### 4. Исправление путей к частичным шаблонам
Также были исправлены неправильные пути к частичным шаблонам в нескольких файлах:
+
- `twitter_cards.html`
-- `schema_json.html`
+- `schema_json.html`
- `opengraph.html`
## Результат
-После всех исправлений сайт успешно запускается командой `hugo server` и
-доступен по адресу http://localhost:1313/
+После всех исправлений сайт успешно запускается командой `hugo server` и
+доступен по адресу
## Вывод
-При обновлении Hugo или тем важно следить за изменениями в API и устаревшими
-функциями. Использование устаревших элементов может привести к ошибкам сборки сайта.
\ No newline at end of file
+При обновлении Hugo или тем важно следить за изменениями в API и устаревшими
+функциями. Использование устаревших элементов может привести к ошибкам сборки сайта.
diff --git a/content/posts/writefreely/index.md b/content/posts/writefreely/index.md
new file mode 100644
index 0000000..5431082
--- /dev/null
+++ b/content/posts/writefreely/index.md
@@ -0,0 +1,273 @@
+---
+title: "Полная инструкция: Установка WriteFreely на wf.gelonet.ru (Debian 13)е"
+date: 2025-11-02T19:00:00+03:00
+draft: false
+tags: ["writefreely", "howto", "debian", "fediverse"]
+categories: ["selfhosting"]
+---
+
+Предполагается, что у вас есть:
+
+- VPS с Debian 13,
+- Доступ к серверу через sudo,
+- Доменное имя gelonet.ru, зарегистрированное у любого регистратора.
+
+## 🔹 Шаг 0: Настройка DNS (в панели регистратора)
+
+Зайдите в панель управления вашего регистратора домена (например, reg.ru, nic.ru, Beget и т.д.).
+
+Найдите раздел «Управление DNS» или «Зоны DNS» для домена gelonet.ru.
+
+Создайте A-запись для поддомена:
+
+Имя (host): wf
+Тип: A
+Значение (IP): [ваш_публичный_IP_сервера]
+TTL: 300 или по умолчанию
+
+Пример:
+wf.gelonet.ru → 5.129.217.146
+
+Сохраните изменения.
+⏱ DNS может обновиться от нескольких секунд до 10–30 минут. Проверить можно командой:
+
+```bash
+dig +short wf.gelonet.ru
+# или
+nslookup wf.gelonet.ru
+```
+
+Результат должен совпадать с IP вашего сервера.
+
+## 🔹 Шаг 1: Подготовка сервера
+
+Подключитесь к серверу по SSH и выполните:
+
+```bash
+# Обновление системы
+sudo apt update && sudo apt upgrade -y
+
+# Установка необходимых пакетов
+sudo apt install -y nginx curl tar ufw
+```
+
+## 🔹 Шаг 2: Настройка фаервола (UFW)
+
+Разрешите SSH, HTTP и HTTPS:
+
+```bash
+sudo ufw allow OpenSSH
+sudo ufw allow 'Nginx Full' # открывает 80/tcp и 443/tcp
+sudo ufw enable
+```
+
+Проверка:
+
+```bash
+sudo ufw status verbose
+```
+
+💡 Порт 80 нужен для получения сертификата, порт 443 — для доступа к сайту по HTTPS.
+
+## 🔹 Шаг 3: Установка WriteFreely
+
+```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
+```
+
+## 🔹 Шаг 4: Настройка WriteFreely
+
+```bash
+sudo -u www-data /var/www/writefreely/writefreely config start
+```
+
+Ответьте на вопросы:
+
+```shell
+ Environment: Production, behind reverse proxy
+ Server address: localhost:8080 (оставьте по умолчанию)
+ Database: SQLite (проще для старта) или MySQL (если настроена БД)
+ Site name: например, Мой блог
+ Admin username: ваш email
+ Admin password: надёжный пароль
+ Остальное — по желанию
+```
+
+Сгенерируйте ключи шифрования:
+
+```bash
+sudo -u www-data /var/www/writefreely/writefreely keys generate
+```
+
+## 🔹 Шаг 5: Создание systemd-сервиса
+
+```bash
+sudo tee /etc/systemd/system/writefreely.service <
+
+Теперь вы полностью контролируете свой контент, без зависимости от сторонних платформ.