Oriġinarjament, is-setup tal-blog tiegħi kien ippjanat bħala proġett IPv6 biss permezz ta' WireGuard, peress li kollox qed jaħdem fuq homeserver (indirizzi IPv6 b'xejn tista' ġġibhom minn route64.org). Biex inżid l-aċċessibbiltà, issa żidt proxy IPv4 estern (Grazzi @Larvitz).
Madankollu, kien hemm problemi tal-SSL immedjatament: Peress li oriġinarjament kemm ir-record A kif ukoll ir-record AAAA kienu għaddejjin mill-proxy, il-validazzjoni ta' Let's Encrypt fuq is-server tiegħi falliet.
Is-soluzzjoni: L-„IPv6-Hack“
Is-soluzzjoni kienet li l-entrata AAAA tiġi ppuntata b'mod espliċitu direttament lejn l-IP tal-WireGuard tas-server tiegħi, minflok ma tgħaddi wkoll mill-proxy.
- Dominju:
blog.burningboard.org
- A-Record (Proxy):
194.28.98.217
- AAAA-Record (Server):
2a11:6c7:f05:a8::2 (WireGuard)
Permezz ta' din l-entrata AAAA diretta lejn l-IP tal-WireGuard tiegħi, Let’s Encrypt xorta jilħaq is-server tiegħi direttament permezz tal-IPv6 (peress li r-record AAAA jingħata prijorità b'mod awtomatiku) u joħroġ iċ-ċertifikat SSL. It-traffiku IPv4 jiġi mgħoddi lili mill-proxy b'mod ikkriptat.
Il-konfigurazzjoni finali
Biex il-komunikazzjoni taħdem bla xkiel, kellna naġġustaw is-servers Caddy:
1. Fuq is-server tiegħi (NixOS, blog.nix)
Biex l-IPs reali tal-viżitaturi jaslu b'mod korrett u ma jiġux miktuba fuqhom bl-IP tal-proxy, dan tal-aħħar irid jiġi mmarkat bħala fdat:
services.caddy.globalConfig = ''
servers {
trusted_proxies static 2a06:9801:1c:1000::10
}
'';
2. Fuq il-proxy estern (Caddy)
Biex il-proxy jikkomunika mas-server tiegħi b'mod korrett permezz tal-HTTPS, irid jibgħat il-hostname (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
}
}
Il-blog issa huwa aċċessibbli permezz tal-IPv4 u l-IPv6, ikkriptat b'mod sigur u l-IP tad-dar tiegħi xorta jibqa' privat! 🚀
L-iktar ħaġa importanti l-ewwel: Il-fajls Markdown tas-soltu jibqgħu l-bażi – jien sempliċement dilettant kbir ta' din is-soluzzjoni sempliċi. Iżda taħt il-kappa, inbidlu ħafna affarijiet:
Għamilt xi tibdiliet fis-setup:
📂 MD-Files: L-istruttura tal-blog tibqa' sempliċi fuq bażi ta' Markdown.
🌍 Aktar globali minn qatt qabel: Il-blog tiegħi issa jappoġġja traduzzjonijiet f'43 lingwa. Iva, inkluż il-Klingon! 🖖 (Qapla'!)

Il-pjan kien traduzzjoni f'ħin reali kompletament awtomatika bbażata fuq ir-rikonoxximent tal-lingwa tal-browser. Spoiler: Ħadem biss parzjalment. Wieħed jinnota: L-IA hija impressjonanti, iżda għadha mhix eżattament "hemm" fejn nixtiequha.
Is-soluzzjoni: Issa sempliċement nittraduċi kull post minn qabel fil-lingwi kollha stabbiliti, li huwa wkoll ħafna aħjar għall-magni tat-tiftix (SEO). Jekk ir-rikonoxximent awtomatiku ma jaħdimx, tistgħu tissettjaw il-lingwa preferuta tagħkom manwalment permezz tal-ikona tal-globu, li mbagħad tiġi ffrankata b'mod sempliċi permezz ta' cookie.
It-traduzzjonijiet issa qed isiru b'Gemini 3 Flash, li qed jagħti riżultati tajbin b'mod tal-għaġeb. Madankollu, wieħed għandu joqgħod attent ħafna għall-IA: Fl-ewwel prova bl-ingrossa (bulk), it-tags ġew tradotti bi żball ukoll, li ovvjament ma kienx ippjanat hekk.
Il-kodiċi għadu disponibbli (sempliċement ibagħtuli messaġġ jekk intom interessati) 👍 Imma nnutaw li s-sistema issa teħtieġ Gemini API Key 🔑 tagħha stess.
Biddilt il-blog tiegħi minn WriteFreely għal żvilupp tiegħi stess: MD-Blog (l-MD ovvjament tfisser Markdown). Il-kausa kienet aġġornament li falla tas-sistema l-antika – iżda fl-aħħar mill-aħħar kienet l-ispinta perfetta biex nissimplifika kollox b'mod radikali u nikseb kontroll sħiħ fuq id-disinn.
Il-qalba tas-sistema huma fajls Markdown sempliċi fil-folder data/, li jinqalbu f'HTML modern waqt li s-sit ikun qed jaħdem. Ir-riżultat huwa veloċi ħafna, jaħdem mingħajr database u, grazzi għas-sistema tad-disinn tiegħi stess (inkluż id-Dark Mode), issa jidher eżattament kif immaġinajtu. Anke buttuna moderna biex taqsam fuq Mastodon issa hija inkluża direttament.
Jekk għandkom interess fil-kodiċi jew fis-setup sempliċi, ikkuntattjawni fuq Mastodon!
Fil-verità, l-idea wara #Winboat hija eċċellenti, iżda l-implimentazzjoni tidher li għadha xi ftit instabbli bħalissa. Mill-installazzjoni fil-bidu tas-sena s-sistema kienet qed taħdem, iżda llum is-softwer waqaf jaħdem kompletament.
L-image f'daqqa waħda rrapportat nuqqas ta' memorja (RAM). Ippruvajt nirranġa l-problema manwalment, iżda sfortunatament dan għamel is-sistema inutilizzabbli għal kollox. Minflok ma nħela aktar ħin fit-tfittxija għall-iżbalji, qlibt direttament għad-Dockurr Windows-Image – dan xorta waħda jifforma l-bażi teknika ta' Winboat.

1. Preparazzjoni
Peress li nuża Podman, l-ewwel ħloqt id-direttorji meħtieġa fuq is-sistema host tiegħi. B'dan il-mod, l-integrità tad-dejta tiġi ppreservata f'każ li l-container ikollu jerġa' jinħoloq:
mkdir -p $HOME/Windows/System
mkdir -p $HOME/Windows/Shared
2. Il-kmand tal-bidu
Nota importanti: Fil-varjabbli -e USERNAME u -e PASSWORD, ibdel il-placeholder bid-dettalji tal-login personali tiegħek.
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
Ladarba l-container ikun attiv, tista' taċċessa l-istanza tal-Windows direttament permezz tal-browser tiegħek:
http://127.0.0.1:8006

3. Sommarju
Il-kmand imsemmi hawn fuq kelli neżegwixxih darba biss. Fl-operat ta' kuljum, l-ambjent tal-Windows issa jista' jiġi kkontrollat b'mod komdu ħafna permezz ta' dawn il-kmandi qosra:
- Ibda:
podman start windows
- Waqqaf:
podman stop windows (jew itfi direttament minn ġo Windows)
- Iċċekkja l-istatus:
podman ps -a
Links addizzjonali:
Installajt il-blog tiegħi stess — l-aktar biex insir naf lil #NixOS aħjar. B'sorpriża, kollox kien pjuttost sempliċi.
WriteFreely huwa tajjeb ħafna għal dan: minimalista, jiġi kkonfigurat malajr u mingħajr ħafna piż żejjed. Perfett biex tibda mill-ewwel u titgħallem xi ħaġa fl-istess ħin. Il-konfigurazzjoni hija ċara u pjaċevoli. Issettjajt ftit għażliet, ippreparajt id-direttorju, poġġejt reverse proxy quddiemu — u lest.
Hekk tidher il-konfigurazzjoni attwali tiegħi ta' NixOS għal dan:
{ 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 għall-ġenerazzjoni taċ-ċwievet ActivityPub: Il-federazzjoni teħtieġ openssl
systemd.services.writefreely.path = [ pkgs.openssl ];
# Ħolqien awtomatiku tad-direttorju tad-dejta bil-permessi korretti
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}
}
'';
}
Dak kien kollox, bażikament. NixOS jagħmilha verament faċli biex tikkonfigura servizzi bħal dawn b'mod nadif u żżommhom riproduċibbli.