Awalnya, pengaturan blog saya direncanakan sebagai proyek IPv6 murni melalui WireGuard, karena semuanya dijalankan di server rumah (omong-omong, Anda bisa mendapatkan alamat IPv6 gratis di route64.org). Untuk meningkatkan aksesibilitas, sekarang saya telah menambahkan proxy IPv4 eksternal (Terima kasih @Larvitz).
Namun, hal ini segera menimbulkan masalah SSL: Karena awalnya baik record A maupun AAAA berjalan melalui proxy, validasi Let's Encrypt di server saya gagal.
Solusi: โIPv6-Hackโ
Solusinya adalah dengan mengarahkan entri AAAA secara eksplisit langsung ke IP WireGuard server saya, alih-alih melewatkannya melalui proxy juga.
- Domain:
blog.burningboard.org
- A-Record (Proxy):
194.28.98.217
- AAAA-Record (Server):
2a11:6c7:f05:a8::2 (WireGuard)
Melalui entri AAAA langsung ke IP WireGuard saya ini, Let's Encrypt tetap dapat menjangkau server saya secara langsung via IPv6 (karena record AAAA diprioritaskan secara default) dan menerbitkan sertifikat SSL. Lalu lintas IPv4 diteruskan dari proxy ke saya dalam keadaan terenkripsi.
Konfigurasi Akhir
Agar komunikasi berjalan lancar, kami harus menyesuaikan server Caddy:
1. Di server saya (NixOS, blog.nix)
Agar IP pengunjung yang asli sampai dengan benar dan tidak tertimpa oleh IP proxy, proxy tersebut harus ditandai sebagai tepercaya (trusted):
services.caddy.globalConfig = ''
servers {
trusted_proxies static 2a06:9801:1c:1000::10
}
'';
2. Di proxy eksternal (Caddy)
Agar proxy dapat menghubungi server saya dengan benar melalui HTTPS, ia harus menyertakan nama host (SNI):
reverse_proxy [https://[2a11:6c7:f05:a8::2]:443](https://[2a11:6c7:f05:a8::2]:443) {
header_up Host {host}
transport http {
tls_server_name blog.burningboard.org
}
}
Blog sekarang dapat diakses melalui IPv4 dan IPv6, terenkripsi dengan aman, dan IP rumah saya tetap terjaga privasinya! ๐
Hal terpenting terlebih dahulu: File Markdown yang biasa tetap menjadi dasarnya โ saya benar-benar penggemar berat solusi sederhana ini. Namun, banyak hal telah berubah di balik layar:
Saya telah melakukan beberapa perubahan pada pengaturannya:
๐ File MD: Struktur blog tetap sederhana berbasis Markdown.
๐ Lebih global dari sebelumnya: Blog saya sekarang mendukung terjemahan dalam 43 bahasa. Ya, termasuk bahasa Klingon! ๐ (Qapla'!)

Rencananya adalah terjemahan waktu nyata yang sepenuhnya otomatis berdasarkan deteksi bahasa browser. Spoiler: Itu hanya berhasil sebagian. Terlihat bahwa: AI memang mengesankan, tetapi belum sepenuhnya "sampai" di titik yang kita inginkan.
Solusinya: Sekarang saya menerjemahkan setiap postingan terlebih dahulu ke dalam semua bahasa yang ditentukan, yang juga jauh lebih baik untuk mesin pencari (SEO). Jika deteksi otomatis tidak berfungsi, Anda dapat mengatur bahasa pilihan Anda secara manual melalui ikon bola dunia, yang kemudian akan disimpan dengan mudah melalui cookie.
Terjemahan sekarang dilakukan dengan Gemini 3 Flash, yang memberikan hasil yang luar biasa bagus. Namun, kita harus tetap mengawasi AI dengan cermat: Pada proses massal (bulk) pertama, tag juga ikut diterjemahkan secara keliru, yang tentu saja tidak direncanakan seperti itu.
Kode tetap tersedia (cukup kirim pesan kepada saya jika berminat) ๐ Namun, harap dicatat bahwa sistem sekarang memerlukan Gemini API Key ๐ sendiri.
Saya baru saja memindahkan blog saya dari WriteFreely ke sistem buatan sendiri: MD-Blog (MD tentu saja singkatan dari Markdown). Pemicunya adalah kegagalan pembaruan pada sistem lama โ namun pada akhirnya, ini menjadi dorongan sempurna untuk menyederhanakan segalanya secara radikal dan mendapatkan kendali penuh atas desain.
Inti dari sistem ini adalah file Markdown sederhana di dalam folder data/, yang diubah menjadi HTML modern saat dijalankan. Hasilnya sangat cepat, tanpa memerlukan basis data, dan berkat sistem desain buatan sendiri (termasuk Mode Gelap), tampilannya kini persis seperti yang saya bayangkan. Bahkan tombol berbagi Mastodon yang modern kini sudah tersedia langsung.
Jika Anda tertarik dengan kode atau pengaturannya yang ramping, silakan hubungi saya melalui Mastodon!
Sebenarnya ide di balik #Winboat sangat luar biasa, namun implementasinya saat ini tampaknya masih agak tidak stabil. Sejak instalasi di awal tahun, sistem memang berjalan, tetapi hari ini perangkat lunak tersebut benar-benar berhenti berfungsi.
Image tersebut tiba-tiba melaporkan memori (RAM) yang tidak mencukupi. Saya mencoba memperbaiki masalah tersebut secara manual, namun sayangnya hal itu justru membuat sistem benar-benar tidak bisa digunakan lagi. Daripada menghabiskan lebih banyak waktu untuk mencari kesalahan (troubleshooting), saya langsung beralih ke Dockurr Windows-Image โ yang mana memang merupakan basis teknis dari Winboat.

1. Persiapan
Karena saya menggunakan Podman, pertama-tama saya membuat direktori yang diperlukan pada sistem host saya. Dengan cara ini, integritas data tetap terjaga jika container harus dibuat ulang:
mkdir -p $HOME/Windows/System
mkdir -p $HOME/Windows/Shared
2. Perintah Menjalankan
Catatan Penting: Ganti placeholder pada variabel -e USERNAME dan -e PASSWORD dengan data akses pribadi Anda.
podman run -d \
--name windows \
-p 8006:8006 \
--device=/dev/kvm \
--cap-add NET_ADMIN \
-e RAM_SIZE="8G" \
-e USERNAME="Carsten" \
-e PASSWORD="1234" \
-e LANGUAGE="German" \
-v $HOME/Windows/System:/storage:Z \
-v $HOME/Windows/Shared:/shared:Z \
--stop-timeout 120 \
dockurr/windows
Segera setelah container aktif, Anda dapat mengakses instansi Windows langsung melalui browser Anda:
http://127.0.0.1:8006

3. Ringkasan
Saya hanya perlu menjalankan perintah di atas satu kali. Dalam penggunaan sehari-hari, lingkungan Windows kini dapat dikendalikan dengan sangat nyaman melalui perintah singkat berikut:
- Memulai:
podman start windows
- Menghentikan:
podman stop windows (atau matikan langsung dari dalam Windows)
- Memeriksa status:
podman ps -a
Tautan Terkait:
Saya baru saja menginstal blog pribadi โ terutama untuk mengenal #NixOS lebih jauh. Mengejutkannya, semuanya berjalan dengan cukup mudah.
WriteFreely sangat cocok untuk ini: minimalis, cepat disiapkan, dan tanpa banyak beban. Sempurna untuk langsung memulai sambil belajar hal baru. Konfigurasinya sangat rapi. Cukup atur beberapa opsi, siapkan direktori, pasang reverse proxy di depannya โ selesai.
Berikut adalah konfigurasi NixOS saya saat ini:
{ 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";
};
# Perbaikan untuk pembuatan kunci ActivityPub: Federasi membutuhkan openssl
systemd.services.writefreely.path = [ pkgs.openssl ];
# Pembuatan direktori data secara otomatis dengan izin yang benar
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}
}
'';
}
Itu saja intinya. NixOS benar-benar memudahkan konfigurasi layanan seperti ini secara bersih dan menjaganya tetap reproduksibel.