Tôi vừa cài đặt một blog cá nhân — chủ yếu là để tìm hiểu kỹ hơn về #NixOS. Thật ngạc nhiên là mọi thứ diễn ra khá suôn sẻ và không hề phức tạp.

WriteFreely cực kỳ phù hợp cho mục đích này: tối giản, thiết lập nhanh và không có nhiều tính năng thừa thãi. Nó hoàn hảo để bắt đầu ngay lập tức và học hỏi thêm điều gì đó trong quá trình thực hiện. Cấu hình của nó cũng rất rõ ràng. Chỉ cần thiết lập vài tùy chọn, chuẩn bị thư mục, đặt một Reverse Proxy phía trước — thế là xong.

Dưới đây là cấu hình NixOS hiện tại của tôi cho việc này:

{ 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";
  };

  # Sửa lỗi tạo khóa ActivityPub: Liên đoàn (Federation) yêu cầu openssl
  systemd.services.writefreely.path = [ pkgs.openssl ];

  # Tự động tạo thư mục dữ liệu với các quyền hạn chính xác
  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}
    }
  '';
}

Về cơ bản chỉ có vậy thôi. NixOS thực sự giúp việc cấu hình các dịch vụ như thế này trở nên sạch sẽ và dễ dàng tái lập.