Инструкция по установке writefreely на debian в докер
This commit is contained in:
@@ -10,7 +10,7 @@ categories: ["Разработка", "Hugo"]
|
|||||||
|
|
||||||
При запуске команды `hugo server` возникала ошибка:
|
При запуске команды `hugo server` возникала ошибка:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
ERROR html/template:_partials/head.html:153:13: no such template "_internal/google_analytics.html"
|
ERROR html/template:_partials/head.html:153:13: no such template "_internal/google_analytics.html"
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -44,6 +44,7 @@ ERROR html/template:_partials/head.html:153:13: no such template "_internal/goog
|
|||||||
### 4. Исправление путей к частичным шаблонам
|
### 4. Исправление путей к частичным шаблонам
|
||||||
|
|
||||||
Также были исправлены неправильные пути к частичным шаблонам в нескольких файлах:
|
Также были исправлены неправильные пути к частичным шаблонам в нескольких файлах:
|
||||||
|
|
||||||
- `twitter_cards.html`
|
- `twitter_cards.html`
|
||||||
- `schema_json.html`
|
- `schema_json.html`
|
||||||
- `opengraph.html`
|
- `opengraph.html`
|
||||||
@@ -51,7 +52,7 @@ ERROR html/template:_partials/head.html:153:13: no such template "_internal/goog
|
|||||||
## Результат
|
## Результат
|
||||||
|
|
||||||
После всех исправлений сайт успешно запускается командой `hugo server` и
|
После всех исправлений сайт успешно запускается командой `hugo server` и
|
||||||
доступен по адресу http://localhost:1313/
|
доступен по адресу <http://localhost:1313/>
|
||||||
|
|
||||||
## Вывод
|
## Вывод
|
||||||
|
|
||||||
|
|||||||
@@ -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