Files
dedinit.ru/content/posts/20251102 writefreely/index.md
T
2026-09-13 14:18:25 +03:00

274 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 <<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
```
Запустите сервис:
```bash
sudo systemctl daemon-reload
sudo systemctl enable --now writefreely
```
Проверка:
```bash
sudo systemctl status writefreely
```
## 🔹 Шаг 6: Настройка Nginx как обратного прокси
Создайте конфиг (замените wf.gelonet.ru на ваш поддомен):
```bash
sudo tee /etc/nginx/sites-available/writefreely <<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
```
Активируйте сайт:
```bash
sudo ln -s /etc/nginx/sites-available/writefreely /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
```
## 🔹 Шаг 7: Получение SSL-сертификата от Let’s Encrypt
Установите Certbot:
```bash
sudo apt install -y certbot python3-certbot-nginx
```
Получите сертификат:
```bash
sudo certbot --nginx -d wf.gelonet.ru
```
Ответьте N на вопрос о передаче email EFF (если не хотите).
Certbot автоматически:
запросит сертификат,
обновит конфиг Nginx для HTTPS,
настроит автоматическое обновление.
📌 Важно: порты 80 и 443 должны быть открыты в UFW и облачном фаерволе!
## 🔹 Шаг 8: Проверка работы
Откройте в браузере свой поддомен, у меня это:
[https://wf.gelonet.ru](https://wf.gelonet.ru)
Вы должны увидеть главную страницу WriteFreely.
Админка доступна по:
[https://wf.gelonet.ru/admin](https://wf.gelonet.ru/admin)
## 🔹 Шаг 9: Проверка автопродления сертификата
Certbot уже настроил таймер, но можно проверить вручную:
```bash
sudo certbot renew --dry-run
```
Если команда завершится без ошибок — всё в порядке.
## 🧰 Полезные команды
Логи WriteFreely:
```bash
sudo journalctl -u writefreely -f
```
Логи Nginx:
```bash
sudo tail -f /var/log/nginx/error.log
```
Обновление WriteFreely:
Остановите сервис: sudo systemctl stop writefreely
Замените бинарник (повторите Шаг 3)
Запустите: sudo systemctl start writefreely
✅ Готово!
Ваш персональный блог на WriteFreely работает по адресу:
👉 <https://wf.gelonet.ru>
Теперь вы полностью контролируете свой контент, без зависимости от сторонних платформ.