ஆரம்பத்தில் எனது வலைப்பதிவு அமைப்பு ஒரு ஹோம் சர்வரில் (homeserver) இயங்குவதால், WireGuard வழியாக ஒரு தூய IPv6-திட்டமாக திட்டமிடப்பட்டது (இலவச IPv6 முகவரிகளை route64.org இல் பெறலாம்). அணுகல்தன்மையை அதிகரிக்க, இப்போது நான் ஒரு வெளிப்புற IPv4 ப்ராக்ஸியைச் (proxy) சேர்த்துள்ளேன் (@Larvitz அவர்களுக்கு நன்றி).
இருப்பினும், இதில் உடனடியாக SSL சிக்கல்கள் ஏற்பட்டன: ஆரம்பத்தில் A மற்றும் AAAA பதிவுகள் (records) இரண்டும் ப்ராக்ஸி வழியாகச் சென்றதால், எனது சர்வரில் Let's Encrypt சரிபார்ப்பு தோல்வியடைந்தது.
தீர்வு: „IPv6-Hack“
இதற்கான தீர்வு, AAAA-பதிவை ப்ராக்ஸி வழியாக அனுப்பாமல், நேரடியாக எனது சர்வரின் WireGuard IP-க்கு சுட்டிக்காட்டுவதாகும்.
- டொமைன் (Domain):
blog.burningboard.org
- A-பதிவு (Proxy):
194.28.98.217
- AAAA-பதிவு (Server):
2a11:6c7:f05:a8::2 (WireGuard)
எனது WireGuard IP-க்கு இந்த நேரடி AAAA-பதிவு மூலம், Let’s Encrypt எனது சர்வரைத் தொடர்ந்து நேரடியாக IPv6 வழியாக அடைகிறது (ஏனெனில் AAAA-பதிவு முன்னுரிமை பெறுகிறது) மற்றும் SSL சான்றிதழை வழங்குகிறது. IPv4 டிராஃபிக் ப்ராக்ஸியால் குறியாக்கம் (encrypt) செய்யப்பட்டு என்னிடம் அனுப்பப்படுகிறது.
இறுதி கட்டமைப்பு
தொடர்பு சீராக நடைபெற, நாங்கள் Caddy சர்வர்களை மாற்றியமைக்க வேண்டியிருந்தது:
1. எனது சர்வரில் (NixOS, blog.nix)
உண்மையான பார்வையாளர்களின் IP முகவரிகள் சரியாக வருவதற்கும், ப்ராக்ஸியின் IP-யால் அவை மாற்றப்படாமல் இருப்பதற்கும், ப்ராக்ஸியை நம்பகமானதாக (trusted) குறிக்க வேண்டும்:
services.caddy.globalConfig = ''
servers {
trusted_proxies static 2a06:9801:1c:1000::10
}
'';
2. வெளிப்புற ப்ராக்ஸியில் (Caddy)
ப்ராக்ஸி எனது சர்வரை HTTPS மூலம் சரியாகத் தொடர்புகொள்ள, அது ஹோஸ்ட் பெயரை (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
}
}
வலைப்பதிவு இப்போது IPv4 மற்றும் IPv6 வழியாக அணுகக்கூடியது, பாதுகாப்பாக குறியாக்கம் செய்யப்பட்டுள்ளது, மேலும் எனது வீட்டு IP முகவரி ரகசியமாகவே இருக்கிறது! 🚀
முக்கியமான விஷயம் என்னவென்றால்: வழக்கமான Markdown கோப்புகளே அடிப்படையாகத் தொடர்கின்றன – இந்த எளிமையான தீர்வின் மீது எனக்கு மிகுந்த ஈடுபாடு உண்டு. ஆனால், இதன் பின்னணியில் பல மாற்றங்கள் செய்யப்பட்டுள்ளன:
நான் அமைப்புகளில் (Setup) சில மாற்றங்களைச் செய்துள்ளேன்:
📂 MD-Files: பிளாக் கட்டமைப்பு Markdown அடிப்படையில் எளிமையாகவே உள்ளது.
🌍 முன்பை விட உலகளாவியது: எனது பிளாக் இப்போது 43 மொழிகளில் மொழிபெயர்ப்புகளை ஆதரிக்கிறது. ஆம், கிளிங்கன் (Klingon) மொழி உட்பட! 🖖 (Qapla'!)

உலாவியின் (Browser) மொழி அங்கீகாரத்தின் அடிப்படையில் முழுமையான தானியங்கி நிகழ்நேர மொழிபெயர்ப்பைத் திட்டமிட்டிருந்தேன். ஸ்பாய்லர்: இது ஓரளவு மட்டுமே வேலை செய்தது. இதிலிருந்து ஒன்று புரிகிறது: AI வியக்கத்தக்கதுதான், ஆனால் நாம் எதிர்பார்க்கும் அளவுக்கு அது இன்னும் முழுமையாக வளரவில்லை.
தீர்வு: இப்போது நான் ஒவ்வொரு பதிவையும் முன்கூட்டியே அனைத்து குறிப்பிட்ட மொழிகளிலும் மொழிபெயர்க்கிறேன், இது தேடுபொறி உகப்பாக்கத்திற்கும் (SEO) மிகவும் சிறந்தது. தானியங்கி கண்டறிதல் வேலை செய்யவில்லை என்றால், உலக உருண்டை ஐகான் (Globe icon) மூலம் உங்களுக்கு விருப்பமான மொழியை நீங்களே தேர்ந்தெடுக்கலாம், அது குக்கீ (Cookie) மூலம் எளிதாகச் சேமிக்கப்படும்.
மொழிபெயர்ப்புகள் இப்போது Gemini 3 Flash மூலம் செய்யப்படுகின்றன, இது வியக்கத்தக்க வகையில் சிறந்த முடிவுகளைத் தருகிறது. இருப்பினும், AI-ஐக் கவனமாகக் கண்காணிக்க வேண்டும்: முதல் முறை மொத்தமாகச் செய்தபோது, தவறுதலாக டேக்குகளும் (Tags) மொழிபெயர்க்கப்பட்டன, இது திட்டமிடப்பட்டதல்ல.
குறியீடு (Code) இன்னும் கிடைக்கிறது (உங்களுக்குத் தேவைப்பட்டால் எனக்கு ஒரு செய்தி அனுப்புங்கள்) 👍 ஆனால், இந்த அமைப்பிற்கு இப்போது ஒரு தனிப்பட்ட Gemini API Key 🔑 தேவை என்பதை நினைவில் கொள்க.
நான் எனது வலைப்பதிவை WriteFreely இலிருந்து எனது சொந்தத் தயாரிப்பான MD-Blog-க்கு மாற்றியுள்ளேன் (இங்கு MD என்பது நிச்சயமாக Markdown-ஐக் குறிக்கிறது). பழைய அமைப்பின் தோல்வியடைந்த புதுப்பிப்பு (update) தான் இதற்குத் தூண்டுதலாக அமைந்தது – ஆனால் இறுதியில், அனைத்தையும் எளிமையாக்கவும், வடிவமைப்பின் (design) மீது முழுமையான கட்டுப்பாட்டைப் பெறவும் இது ஒரு சிறந்த வாய்ப்பாக அமைந்தது.
இதன் முக்கிய அம்சம் data/ கோப்புறையில் உள்ள எளிய Markdown கோப்புகள் ஆகும், அவை இயங்கும் நேரத்தில் (runtime) நவீன HTML ஆக மாற்றப்படுகின்றன. இதன் விளைவாக இது மின்னல் வேகத்தில் இயங்குகிறது, இதற்குத் தரவுத்தளம் (database) தேவையில்லை, மேலும் எனது சொந்த வடிவமைப்பு முறைக்கு (Dark Mode உட்பட) நன்றி, இது இப்போது நான் கற்பனை செய்தபடியே உள்ளது. இப்போது இதில் ஒரு நவீன Mastodon-Share-Button கூட நேரடியாக இணைக்கப்பட்டுள்ளது.
உங்களுக்கு இதன் குறியீடு (code) அல்லது இந்த எளிய அமைப்பில் ஆர்வம் இருந்தால், Mastodon மூலம் என்னைத் தொடர்பு கொள்ளுங்கள்!
Winboat-ன் பின்னணியில் உள்ள யோசனை உண்மையில் சிறப்பானது, ஆனால் அதன் தற்போதைய செயல்பாடு சற்று நிலையற்றதாகத் தெரிகிறது. இந்த ஆண்டின் தொடக்கத்தில் நிறுவியதிலிருந்து கணினி இயங்கி வந்தது, ஆனால் இன்று மென்பொருள் முழுமையாகச் செயல்படுவதை நிறுத்திவிட்டது.
அந்த இமேஜ் திடீரென போதிய நினைவகம் (RAM) இல்லை என்று காட்டியது. நான் அந்தப் பிரச்சனையை கைமுறையாகச் சரிசெய்ய முயன்றேன், ஆனால் துரதிர்ஷ்டவசமாக அது கணினியை முற்றிலும் பயன்படுத்த முடியாததாக மாற்றிவிட்டது. பிழைகளைக் கண்டறிவதில் அதிக நேரத்தைச் செலவிடுவதற்குப் பதிலாக, நான் நேரடியாக Dockurr Windows-Image-க்கு மாறிவிட்டேன் – இதுவே Winboat-ன் தொழில்நுட்ப அடிப்படையாகும்.

1. தயாரிப்பு
நான் Podman-ஐப் பயன்படுத்துவதால், முதலில் எனது ஹோஸ்ட் சிஸ்டத்தில் தேவையான கோப்பகங்களை உருவாக்கினேன். இதன் மூலம் கன்டெய்னரை மீண்டும் உருவாக்க வேண்டியிருந்தாலும் தரவு ஒருமைப்பாடு பாதுகாக்கப்படும்:
mkdir -p $HOME/Windows/System
mkdir -p $HOME/Windows/Shared
2. தொடக்கக் கட்டளை
முக்கிய குறிப்பு: -e USERNAME மற்றும் -e PASSWORD ஆகிய மாறிகளில் (Variables) உள்ள இட ஒதுக்கீடுகளை உங்கள் தனிப்பட்ட உள்நுழைவு விவரங்களைக் கொண்டு மாற்றவும்.
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
கன்டெய்னர் செயல்பாட்டிற்கு வந்ததும், உங்கள் உலாவியின் மூலம் நேரடியாக Windows நிகழ்வை அணுகலாம்:
http://127.0.0.1:8006

3. சுருக்கம்
மேலே குறிப்பிட்டுள்ள கட்டளையை நான் ஒரு முறை மட்டுமே இயக்க வேண்டியிருந்தது. தினசரி பயன்பாட்டில், இப்போது இந்த குறுக்குக் கட்டளைகள் மூலம் Windows சூழலை மிக வசதியாகக் கட்டுப்படுத்த முடியும்:
- தொடங்க:
podman start windows
- நிறுத்த:
podman stop windows (அல்லது நேரடியாக Windows-க்குள்ளேயே ஷட் டவுன் செய்யவும்)
- நிலையைச் சரிபார்க்க:
podman ps -a
கூடுதல் இணைப்புகள்:
நான் எனது சொந்த வலைப்பதிவை (Blog) நிறுவியுள்ளேன் — முக்கியமாக #NixOS பற்றி நன்றாகத் தெரிந்துகொள்வதற்காக. ஆச்சரியப்படும் விதமாக, இது மிகவும் எளிதாக முடிந்தது.
இதற்கு WriteFreely மிகவும் பொருத்தமானது: எளிமையானது, விரைவாக அமைக்கக்கூடியது மற்றும் தேவையற்ற சுமை இல்லாதது. எளிய முறையில் தொடங்கி, அதே நேரத்தில் புதிய விஷயங்களைக் கற்றுக்கொள்ள இது சிறந்தது. இதன் கட்டமைப்பு (Configuration) மிகவும் தெளிவாக உள்ளது. சில விருப்பங்களை அமைத்து, கோப்பகத்தைத் (Directory) தயார் செய்து, ஒரு Reverse Proxy-ஐ இணைத்தால் போதும் — வேலை முடிந்தது.
இதற்கான எனது தற்போதைய NixOS கட்டமைப்பு (Configuration) இதோ:
{ 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}
}
'';
}
அவ்வளவுதான். இத்தகைய சேவைகளைச் சுத்தமாக வடிவமைக்கவும், மீண்டும் உருவாக்கக்கூடிய வகையில் (reproducible) வைத்திருக்கவும் NixOS மிகவும் எளிதாக்குகிறது.