قمت بإنشاء مدونتي الخاصة — بشكل أساسي للتعرف على #NixOS بشكل أفضل. والمفاجأة أن الأمر كان بسيطاً للغاية وغير معقد.
منصة WriteFreely مناسبة جداً لهذا الغرض: فهي بسيطة، سريعة الإعداد، وخالية من الإضافات غير الضرورية. إنها مثالية للبدء فوراً وتعلم شيء جديد في نفس الوقت. الإعدادات واضحة ومنظمة بشكل مريح؛ مجرد ضبط بعض الخيارات، وتجهيز المجلد، ووضع بروكسي عكسي (Reverse Proxy) أمامها — وانتهى الأمر.
إليك كيف يبدو تكوين NixOS الحالي الخاص بي لهذا الغرض:
{ config, pkgs, ... }:
{
services.writefreely = {
enable = true;
host = "blog.burningboard.org";
settings = {
server = {
port = 8080;
min_log_level = "debug";
};
app = {
host = "https://blog.burningboard.org";
single_user = true;
landing = "/read";
wf_modesty = true;
federation = true;
public_stats = true;
theme = "write";
};
};
stateDir = "/opt/writefreely";
};
# Fix für die ActivityPub-Schlüsselgenerierung: Föderation erfordert openssl
systemd.services.writefreely.path = [ pkgs.openssl ];
# Automatisches Erstellen des Datenverzeichnisses mit den korrekten Berechtigungen
systemd.tmpfiles.rules = [
"d /opt/writefreely 0700 writefreely writefreely -"
];
services.caddy.virtualHosts."blog.burningboard.org".extraConfig = ''
reverse_proxy 127.0.0.1:8080 {
header_up Host {host}
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
header_up X-Forwarded-Proto {scheme}
}
'';
}
هذا هو كل شيء باختصار. يجعل NixOS من السهل حقاً تكوين مثل هذه الخدمات بشكل نظيف والحفاظ عليها قابلة لإعادة الإنتاج (reproducible).