add some old posts
This commit is contained in:
@@ -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 <<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>
|
||||
|
||||
Теперь вы полностью контролируете свой контент, без зависимости от сторонних платформ.
|
||||
Reference in New Issue
Block a user