VPS-ல் SimpleX chat server-ஐ சுய-வழங்கி அமைப்பது எப்படி?
VPS-ல் SimpleX SMP relay-ஐ நிறுவுவதற்கான முழுமையான வழிகாட்டி. இதில் TLS அமைப்பு, unprivileged service user உருவாக்கம், ports மற்றும் server-ன் பாதுகாப்பு அம்சங்கள் உள்ளன.
சுய-வழங்கி (self-hosted) SimpleX chat server-ன் செயல்பாடுகள்
SimpleX chat server-ஐ நீங்களே வழங்க, ஒரு VPS-ல் ஒரு daemon-ஐ இயக்க வேண்டும்: smp-server, இது SMP (simplex messaging protocol)-க்கான relay ஆகும். உங்கள் தொடர்புகள் செய்திகளை எழுதும் மற்றும் வாசிக்கும் message queue-களை இது வைத்திருக்கிறது. xftp-server என்று அழைக்கப்படும் இரண்டாவது, விருப்பத்தேர்வு சார்ந்த daemon கோப்பு பரிமாற்றங்களை (file transfers) கையாளுகிறது. இவை இரண்டும் ஒரே திட்டத்திலிருந்து, simplexmq, வருகின்றன. ஒவ்வொன்றும் ஒரு single binary, ஒரு config file மற்றும் ஒரு append-only log ஆகியவற்றைக் கொண்டிருக்கும்.
இது செயலி பயனருக்கானது அல்ல, நிர்வாகிக்கான (operator) வழிகாட்டி. இந்த relay எந்த கணக்குகளையும், தொடர்புப் பட்டியல்களையும் அல்லது உரையாடல் வரலாற்றையும் சேமிப்பதில்லை. இது queue-கள், விநியோகிக்கப்படாத சில ciphertext மற்றும் தன்னை அடையாளப்படுத்தும் ஒரு certificate ஆகியவற்றை மட்டுமே வைத்திருக்கும். நீங்கள் கவனிக்க வேண்டியவை: uptime, குறைந்த அளவு disk இடம் மற்றும் உங்கள் server வழியாகச் செல்லும் metadata.
கீழே உள்ள ஒவ்வொரு command, path, port மற்றும் flag ஆகியவை அந்தந்த திட்டத்தின் அதிகாரப்பூர்வ ஆவணங்களிலிருந்து பெறப்பட்டவை: SMP server hosting பக்கம், XFTP server பக்கம், மற்றும் protocol security ஆவணம். எண்களின் முக்கியத்துவம் கருதி, அவை பெறப்பட்ட பக்கத்தின் பெயர் அதனருகே குறிப்பிடப்பட்டுள்ளது.
பயனர் அடையாளங்கள் இல்லாத நெட்வொர்க்கிற்கு ஏன் relays தேவைப்படுகின்றன
SimpleX-ல் usernames, phone numbers அல்லது account IDs கிடையாது. ஒரு contact என்பது ஒருதலைப்பட்சமான queue ஆகும்: இது ஒரு relay-ல் உள்ள முகவரி, இதில் ஒரு பக்கம் எழுதும், மறுபக்கம் படிக்கும். ஒரு server-ஆல் இணைக்கக்கூடிய எந்தவொரு அடையாளத்தையும் உங்கள் இரு contacts-ம் பகிர்ந்து கொள்வதில்லை.
அந்த queues ஏதோ ஒரு இடத்தில் இருக்க வேண்டும், இதற்கு ஒரு எளிய காரணம் உள்ளது. இரண்டு phones-ம் ஒரே நேரத்தில் online-ல் இருப்பது அரிது. ஒரு device செய்தியை அனுப்பும்போது, மற்றொன்று கேட்கும் வரை அதை ஏதோ ஒன்று பெற்று வைத்திருக்க வேண்டும். இதுவே SMP relay-ன் முழுமையான பணி. இதன் பொருள், இரண்டு devices-ம் ஒன்றுடன் ஒன்று நேரடியாக இணைவதில்லை, எனவே ஒன்றின் IP (internet protocol) முகவரி மற்றொன்றுக்குத் தெரியாது. அந்த வெளிப்பாட்டை relay-தான் ஏற்றுக்கொள்கிறது.
Relay-ன் hostname என்பது queue முகவரியின் ஒரு பகுதி, எனவே நீங்கள் பகிரும் ஒவ்வொரு invitation link-லும் அது இடம்பெற்றிருக்கும். இறுதியில் உள்ள threat model-ஐப் படிக்கும்போது இதை நினைவில் கொள்ளுங்கள்.
ஒரு relay-ஆல் எவற்றைப் பார்க்க முடியும், எவற்றைப் பார்க்க முடியாது
இந்தத் திட்டம் protocol/security.md-ல் இதைப் பற்றிய அச்சுறுத்தல் மாதிரியை (threat model) விளக்குகிறது. எதையும் நிறுவும் முன் இதைப் படிப்பது அவசியம், ஏனெனில் இந்த வழிகாட்டிக்குப் பிறகு அந்த relay-ன் பொறுப்பு உங்களுடையது. ஒரு relay, அது தாக்குபவரின் கட்டுப்பாட்டில் இருந்தாலும், செய்திகளின் உள்ளடக்கத்தையோ அல்லது அதன் வகையையோ அறிய முடியாது. தனிப்பட்ட செய்திகளை கண்டறிய முடியாதபடி சேர்க்கவோ, நகலெடுக்கவோ அல்லது சிதைக்கவோ முடியாது. மேலும், ஒரு active attack மூலம் end-to-end encryption-ஐ உடைக்கவும் முடியாது.
அதே பக்கத்தில் ஒரு relay-ஆல் என்ன செய்ய முடியும் என்பதும் பட்டியலிடப்பட்டுள்ளது. ஒரு queue பெறுநர் எப்போது online-ல் இருக்கிறார் என்பதை அதனால் அறிய முடியும். ஒரு queue வழியாக எத்தனை செய்திகள் செல்கின்றன என்பதை அதனால் எண்ண முடியும். பெறுநரின் IP address-ஐ அதனால் தெரிந்துகொள்ள முடியும். ஒரு queue-வில் வரும் எதிர்காலச் செய்திகள் அனைத்தையும் அதனால் தடுக்க முடியும், அல்லது அந்த queue-வின் நிலை குறித்து பொய் சொல்ல முடியும்.
எனவே, இந்த வேறுபாடு தெளிவாக உள்ளது. ரகசியத்தன்மை (confidentiality) என்பது client-ன் பொறுப்பு, self-hosting இதில் எந்த மாற்றத்தையும் செய்வதில்லை. Metadata மற்றும் availability ஆகியவை relay operator-ன் பொறுப்பு, self-hosting மூலம் இவை இரண்டுமே உங்களிடம் ஒப்படைக்கப்படுகின்றன.
தொடங்குவதற்கு முன் உங்களுக்குத் தேவையானவை
- Ubuntu 22.04 அல்லது 24.04 இயங்கும் ஒரு VPS. இந்தத் திட்டம் அந்த இரண்டு பதிப்புகளுக்காகவே பிரத்யேகமாக உருவாக்கப்பட்ட, x86-64 மற்றும் aarch64 கட்டமைப்பிற்கான release binaries-ஐ வழங்குகிறது.
- உங்கள் VPS-ஐச் சுட்டிக்காட்டும் A record கொண்ட ஒரு domain name. உங்களிடம் IPv6 இருந்தால், ஒரு AAAA record-ம் தேவை. ஆவணங்கள் உதாரணத்திற்கு
smp1.example.com-ஐப் பயன்படுத்துகின்றன. - Root அல்லது
sudoஅணுகல், மற்றும் firewall-ஐ மாற்றும்போது திறந்து வைத்திருக்க வேண்டிய இரண்டாவது SSH session. - server-ன் அடையாளமாக config directory இருப்பதால், backup-ஐச் சேமிக்க server-க்கு வெளியே ஒரு இடம்.
ARM instance-ல், x86-64-க்கு பதிலாக aarch64 asset-ஐப் பயன்படுத்தவும். இந்த வழிகாட்டியில் வேறு எந்த மாற்றமும் இல்லை. ARM மற்றும் x86 VPS திட்டங்களுக்கு இடையிலான தேர்வு என்பது விலை மற்றும் ஒரு core-ன் வேகத்தைப் பொறுத்தது, இந்த மென்பொருள் இயங்குமா என்பதைப் பொறுத்தது அல்ல.
"latest" பதிப்பிற்குப் பதிலாக, ஒரு குறிப்பிட்ட பதிப்பை (pinned release) நிறுவுதல்
இந்தத் திட்டம் தற்போதைய பதிப்பைப் பதிவிறக்கி, simplex-servers-update கட்டளையைப் பதிவு செய்யும் ஒரு நிறுவல் ஸ்கிரிப்டை வழங்குகிறது. இது வேலை செய்யும். இருப்பினும், பதிப்பை உறுதிப்படுத்தவும் (pin): உங்கள் கட்டுப்பாட்டில் இல்லாமல் binary மாறினால், ஏதேனும் சிக்கல் ஏற்படும்போது அந்த relay-ஐப் புரிந்துகொள்வது கடினம்.
ஆகஸ்ட் 2026 நிலவரப்படி, தற்போதைய simplexmq பதிப்பு v6.5.0 ஆகும், இது 29 ஏப்ரல் 2026 அன்று வெளியிடப்பட்டது. உங்களுக்குத் தேவையான tag-ஐக் கண்டறிய releases page-ஐப் பார்க்கவும், பின்னர் கீழே உள்ள அனைத்து இடங்களிலும் அந்த tag-ஐப் பயன்படுத்தவும்.
sudo useradd -m smp
sudo install -d -o smp -g smp -m 755 /etc/opt/simplex /var/opt/simplexuseradd -m smp கடவுச்சொல்லை அமைப்பதில்லை, எனவே யாரும் நேரடியாக smp ஆக உள்நுழைய முடியாது. மற்ற எதையும் இயக்கும் முன், நீங்களே இரண்டு கோப்பகங்களை (directories) உருவாக்கவும். ஏனெனில் /etc/opt root-க்குச் சொந்தமானது மற்றும் அதன் mode 755 ஆக உள்ளது; இது smp பயனர் தனது சொந்த உள்ளமைவு கோப்பகத்தை (config directory) உருவாக்க இடமளிக்காது.
VER=v6.5.0
curl -fL "https://github.com/simplex-chat/simplexmq/releases/download/$VER/smp-server-ubuntu-24_04-x86-64" -o /tmp/smp-server
sha256sum /tmp/smp-serverஅந்த hash-ஐ, அதே tag-க்கான வெளியீட்டுக் குறிப்புகளில் (release notes) வெளியிடப்பட்டுள்ள SHA2-256 checksums உடன் ஒப்பிடவும். இந்தத் திட்டம் வெளியீட்டு checksum-களை SimpleX Chat key FB44AF81A45BDE327319797C85107E357D4A17FC மூலம் கையொப்பமிடுகிறது, இது server page-ல் ஆவணப்படுத்தப்பட்டுள்ளது. எனவே, நீங்கள் hash-ஐப் படிக்கும் பக்கத்தை மட்டும் நம்புவதற்குப் பதிலாக, கையொப்பத்தைச் சரிபார்க்கலாம்.
sudo install -m 755 -o root -g root /tmp/smp-server /usr/local/bin/smp-serverஇதை root-உரிமையிலேயே நிறுவவும். இந்தச் சேவை smp ஆக இயங்குகிறது, எனவே சேவை சமரசம் செய்யப்பட்டாலும் (compromise), அது தொடங்கும் binary-ஐ மாற்றியமைக்க முடியாது.
Initialise the server, and the two secrets it prints
sudo su smp -c "smp-server init --yes --store-log --daily-stats --no-password --fqdn=smp1.example.com"--store-log(-l) writes an append-only log of queues to/var/opt/simplex/smp-server-store.log, so the relay survives a restart. Without it a restart throws away every queue, which means every contact routed through you stops working.--daily-stats(-s) writes counters in CSV form to/var/opt/simplex/smp-server-stats.daily.log.--fqdnputs your domain into the generated certificate. Use--ipinstead if you have no domain.--no-passwordlets anyone create a queue on your relay. To keep it private, setcreate_passwordunder[AUTH]in/etc/opt/simplex/smp-server.iniafter init, rather than passing--passwordhere, because a command line is visible in your shell history and in the process list while it runs.
Init generates a certificate and prints the two values you must keep. The first is the fingerprint, a base64 string that is also written to /etc/opt/simplex/fingerprint. The second is the full server address, which is the fingerprint plus your hostname. Copy both now.
Init also creates /etc/opt/simplex/ca.key, and the docs tell you to move that file to offline storage. The reason is worth stating: clients pin the fingerprint of that certificate authority, so anyone holding ca.key can issue a fresh server certificate that your clients accept as yours. You only need it back to rotate the server certificate later with smp-server cert.
Treat init as a one-time step. The fingerprint in your address comes from the authority it generates, so regenerating that authority gives you a different address and orphans the one you handed out.
systemd-ன் கீழ் privileged அல்லாத பயனராக இயக்குதல்
ஆவணங்களில் கொடுக்கப்பட்டுள்ளபடி /etc/systemd/system/smp-server.service-ஐ எழுதவும்:
[Unit]
Description=SMP server systemd service
[Service]
User=smp
Group=smp
Type=simple
ExecStart=/usr/local/bin/smp-server start +RTS -N -RTS
ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex/smp-server-store.log" ] && cp "/var/opt/simplex/smp-server-store.log" "/var/opt/simplex/smp-server-store.log.bak"'
LimitNOFILE=65535
KillSignal=SIGINT
TimeoutStopSec=infinity
[Install]
WantedBy=multi-user.targetUpstream unit-ல் AmbientCapabilities=CAP_NET_BIND_SERVICE-ம் உள்ளது. அந்த process smp-ஆக இயங்குவதால் அந்த வரி உள்ளது. 1024-க்குக் கீழே உள்ள ports-ஐ root அல்லாத process-களால் அணுக முடியாது, எனவே அது இல்லாமல் daemon-ஆல் 80 அல்லது 443-ஐ bind செய்ய முடியாது. நீங்கள் அந்த ports-ஐப் பயன்படுத்தினால் அதைச் சேர்க்கவும். ஒவ்வொரு subscribed client-ம் ஒரு திறந்த TCP connection-ஐ வைத்திருப்பதால் LimitNOFILE=65535 முக்கியமானது; busy relay-க்குத் தேவையான அளவை விட default limit மிகக் குறைவாக இருக்கும். ExecStopPost ஒவ்வொரு முறை நிறுத்தப்படும்போதும் store log-ஐ ஒரு .bak கோப்பில் நகலெடுக்கும், இது உங்களுக்கு ஒரு இலவச rollback point-ஐ வழங்கும்.
sudo systemctl daemon-reload
sudo systemctl enable --now smp-server
sudo systemctl status smp-server
sudo journalctl -fu smp-serverசரியாகத் தொடங்கினால், server address log-ல் பதிவாகும். பின் sockets திறக்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும்:
sudo ss -tlnp | grep -E ':(443|5223)'இரண்டு வரிகளிலும் smp-server குறிப்பிடப்பட்டிருக்க வேண்டும். VPS-ல் ஒவ்வொரு சேவைக்கும் தனி கணக்கு உருவாக்குவது குறித்து விவரிக்கப்பட்டுள்ள அதே நடைமுறையைப் பின்பற்றி, sudo உரிமைகள் ஏதுமின்றி daemon-ஐ அதன் சொந்த கணக்கில் இயக்குவது சிறந்தது. இது ஒரு network daemon-ல் ஏற்படும் பிழை root shell-ஆக மாறுவதைத் தடுக்கும்.
எந்தெந்த ports-ஐத் திறக்க வேண்டும், எதை மூடி வைக்க வேண்டும்
ஆவணங்கள் மூன்று ports-ஐக் குறிப்பிடுகின்றன: 5223/tcp, 443/tcp மற்றும் 80/tcp. Port 5223 என்பது SMP transport ஆகும். வழங்கப்பட்ட configuration, port: 5223,443-ஐ [TRANSPORT]-ன் கீழ் அமைக்கிறது, எனவே அதே protocol 443-லும் பதிலளிக்கிறது. பல கட்டுப்பாடுகள் கொண்ட network-களில் 443-ஐத் தவிர மற்ற outbound traffic அனுமதிக்கப்படுவதில்லை என்பதால் இது முக்கியமானது. Port 80, விருப்பத்தேர்வாக உள்ள தகவல் பக்கம் மற்றும் அதை HTTPS-க்கு redirect செய்ய மட்டுமே தேவைப்படுகிறது.
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 5223/tcp
sudo ufw enable5224-ஐத் திறக்க வேண்டாம். அது control port ஆகும், ஆவணங்கள் அதை server-லிருந்தே nc 127.0.0.1 5224 மூலம் அணுகுகின்றன. இது server-ன் நிலையை அச்சிட்டு queues-ஐ நீக்கும் என்பதால், இது [AUTH]-ன் கீழ் admin மற்றும் user passwords அமைக்கப்பட்ட loopback-ல் மட்டுமே இருக்க வேண்டும். நீங்கள் இந்த tool-க்கு புதியவர் என்றால், VPS-ல் ufw-ன் அடிப்படைகள் கட்டுரை, rule வரிசை மற்றும் உங்களை நீங்களே பூட்டிக்கொள்வதைத் தவிர்ப்பது எப்படி என்பதை விளக்குகிறது.
மற்றொரு கட்டுப்பாட்டு அம்சம் பலரைச் சிக்கலில் ஆழ்த்துகிறது. பெரும்பாலான service providers, server-ல் உள்ள ufw-க்குத் தனிப்பட்டதாக, panel-ல் ஒரு network firewall-ஐ இயக்குகின்றனர். ஒரு port ufw-ல் திறக்கப்பட்டிருந்தாலும், அது உங்களை வந்தடைவதற்கு முன்பே network firewall-ஆல் தடுக்கப்படலாம்.
உங்கள் clients-க்குத் தேவையான server முகவரி
smp://<fingerprint>[:<password>]@<public_hostname>[,<onion_hostname>]அந்த string மட்டுமே client-side-ன் முழுமையான configuration ஆகும். அதை app-ன் server settings-ல் paste செய்யவும், அல்லது app காட்டும் QR code-ஐ scan செய்ய அனுமதிக்கவும். QR code-ல் password-ம் அடங்கியுள்ளதாக ஆவணங்கள் குறிப்பிடுகின்றன; எனவே, அதை scan செய்பவர் உங்கள் server வழியாக செய்திகளைப் பெற முடியும்.
ஆவணப்படுத்தப்பட்ட ஒரு செயல்பாடு அனைவரையும் ஆச்சரியப்படுத்துகிறது. app-ல் உங்கள் server-ஐச் சேர்ப்பது, அந்த நேரத்திற்குப் பிறகு நீங்கள் உருவாக்கும் contacts-ஐ மட்டுமே பாதிக்கும். ஏற்கனவே உள்ள contacts, அவற்றின் queues உருவாக்கப்பட்ட relays-லேயே இருக்கும்; அவை இடம்பெயராது. இதனால்தான், ஒரு relay-ஐ மாற்றிய மறுநாளே அதை நீங்கள் அணைக்க முடியாது.
XFTP file relay-ஐ சேர்த்தல்
XFTP (SimpleX file transfer protocol) என்பது நெட்வொர்க்கின் கோப்பு பரிமாற்றப் பகுதியாகும். இது தனக்கென தனி முகவரியைக் கொண்ட ஒரு தனி daemon ஆகும். திட்டத்தின் XFTP அறிவிப்பின்படி, relay-களில் கோப்பு மெட்டாடேட்டா (metadata) எதுவும் இருக்காது. இவை 256kb, 1mb அல்லது 4mb அளவுள்ள தனித்தனி துண்டுகளை மட்டுமே பார்க்கும். இதற்கான அணுகல் அநாமதேய (anonymous) நற்சான்றிதழ்கள் மூலம் அங்கீகரிக்கப்படுகிறது. ஒரு அனுப்புநர் ஒரு கோப்பின் துண்டுகளைப் பல relay-களுக்குப் பரப்ப முடியும் என்பதால், உங்கள் server-ல் முழுமையான கோப்புகள் இருக்காது, துண்டுகள் மட்டுமே இருக்கும்.
sudo useradd -m xftp
sudo install -d -o xftp -g xftp -m 755 /etc/opt/simplex-xftp /var/opt/simplex-xftp /srv/xftp
curl -fL "https://github.com/simplex-chat/simplexmq/releases/download/$VER/xftp-server-ubuntu-24_04-x86-64" -o /tmp/xftp-server
sudo install -m 755 -o root -g root /tmp/xftp-server /usr/local/bin/xftp-server
sudo su xftp -c "xftp-server init -l --fqdn=xftp1.example.com -q '20gb' -p /srv/xftp/"இதன் கட்டமைப்பு (config) /etc/opt/simplex-xftp/-ல் உள்ளது, அதன் நிலை (state) /var/opt/simplex-xftp/-ல் உள்ளது, மேலும் கோப்புத் துண்டுகள் -p-ல் குறிப்பிடப்பட்டுள்ள இடத்தில் சேமிக்கப்படும். இதற்கான systemd unit, User=xftp மற்றும் ExecStart=/usr/local/bin/xftp-server start +RTS -N -RTS ஆகியவற்றைக் கொண்டு அதே அமைப்பில் இருக்கும். Init, SMP முகவரியைப் போன்றே xftp:// முகவரியை அச்சிடும், மேலும் அதன் fingerprint /etc/opt/simplex-xftp/fingerprint-ல் இருக்கும்.
இதில் கவனிக்க வேண்டிய ஒரு மோதல் (collision) உள்ளது. XFTP server-க்கான ஆவணப்படுத்தப்பட்ட port 443 ஆகும், SMP கட்டமைப்பிலும் 443 குறிப்பிடப்பட்டுள்ளது. ஒரே முகவரியில் இரண்டு process-கள் ஒரே port-ஐப் பயன்படுத்த முடியாது. எனவே, ஒரு VPS-ல் ஏதேனும் ஒன்றை மாற்ற வேண்டும். எளிமையான தீர்வு, SMP [TRANSPORT] பகுதியில் port: 5223-ஐ அமைத்துவிட்டு, 443 port-ஐ file relay-க்கு விட்டுவிடுவதுதான். இதனால் கட்டுப்பாடுகள் உள்ள நெட்வொர்க்குகளில் உள்ள client-களுக்கான 443 fallback வசதி கிடைக்காது. இதற்கு மாற்றாக, அதே VPS-ல் இரண்டாவது IP முகவரியைப் பயன்படுத்தலாம் அல்லது இரண்டாவது VPS-ஐப் பயன்படுத்தலாம்.
Quota-வை சரியாகத் திட்டமிடுங்கள். -q '20gb' என்பது உங்களிடம் உள்ள disk இடத்தைப் பற்றிய ஒரு உறுதிமொழி. File relay தான் அதிக disk மற்றும் bandwidth-ஐப் பயன்படுத்தும் பகுதி. Message relay மிகக் குறைந்த அளவே இவற்றைப் பயன்படுத்தும்.
வட்டில் எவை சேமிக்கப்படுகின்றன மற்றும் backup எவற்றை மீட்டெடுக்கிறது
இரண்டு directories முக்கியமானவை. /etc/opt/simplex/ என்பது அடையாளத்தைக் குறிக்கிறது: smp-server.ini, server certificate மற்றும் key, ca.key, மற்றும் fingerprint. /var/opt/simplex/ என்பது நிலையை (state) குறிக்கிறது: smp-server-store.log என்பது queues-ஐயும், restore_messages: on-ஆக இருக்கும்போது, அனுப்பப்படாத செய்திகளையும், தினசரி புள்ளிவிவரக் கோப்பையும் (stats file) கொண்டுள்ளது.
sudo systemctl stop smp-server
sudo tar czf /root/simplex-backup.tgz -C / etc/opt/simplex var/opt/simplex
sudo chmod 600 /root/simplex-backup.tgz
sudo systemctl start smp-serverஅந்த archive எதைக் குறிக்கிறது என்பதில் தெளிவாக இருங்கள். இது ஒரு செய்தி காப்பகம் (message archive) அல்ல: வரிசையில் உள்ளவை (queued items) relay-யிடம் இல்லாத keys-க்கான ciphertext ஆகும், மேலும் விநியோகிக்கப்பட்ட [STORE_LOG] config 21 நாட்களுக்குப் பிறகு செய்திகளை நீக்கிவிடும். இது server-ன் அடையாளத்தின் நகலாகும், ca.key-உம் இதில் அடங்கும், எனவே இந்த கோப்பை எடுக்கும் எவரும் உங்கள் தொடர்புகளிடம் உங்களைப் போலவே தங்களைக் காட்டிக்கொள்ள முடியும். இதை encrypt செய்து, server-க்கு வெளியே பாதுகாப்பாக வைக்கவும்.
இதன் பலன் மீட்டெடுப்பதில் (restore) உள்ளது. /etc/opt/simplex-ஐ ஒரு புதிய VPS-ல் மீண்டும் பதிவேற்றி, அதே DNS பெயரை அதற்குச் சுட்டிக்காட்டினால், fingerprint மாறாது, எனவே நீங்கள் வழங்கிய அனைத்து முகவரிகளும் தொடர்ந்து செயல்படும். அந்த directory-ஐ இழந்துவிட்டால், மீட்டெடுக்க முடியாது: புதிய நிறுவல் (install) என்பது புதிய fingerprint-ஐக் குறிக்கும், அதாவது புதிய முகவரி, இதன் பொருள் உங்கள் relay வழியாக இணைக்கப்பட்ட அனைத்து தொடர்புகளும் துண்டிக்கப்பட்டுவிடும்.
TLS: வெவ்வேறு பணிகளைச் செய்யும் இரண்டு certificates
SMP transport ஒரு பொதுவான certificate authority-ஐப் பயன்படுத்துவதில்லை. Init ஒரு private authority மற்றும் server certificate-ஐ உருவாக்குகிறது. அந்த authority-ன் fingerprint, server address-க்குள் பயணிக்கிறது. Server சமர்ப்பிக்கும் சான்றிதழை, client அந்த pinned fingerprint-உடன் ஒப்பிட்டுச் சரிபார்க்கிறது. இதுவே machine-in-the-middle தாக்குதல்களிலிருந்து client-to-server இணைப்பைப் பாதுகாக்கும் முறையாகத் திட்டத்தால் விவரிக்கப்படுகிறது. அந்த port-ல் இயங்குவதற்கு ACME (automatic certificate management environment) client கிடையாது. எனவே, smp-server cert-ஐ இயக்கி, SMP_SERVER_CFG_PATH-ஐ அமைப்பதன் மூலம் rotation கைமுறையாகச் செய்யப்பட வேண்டும்.
விருப்பத்தேர்வாக உள்ள information page-க்கு இரண்டாவது certificate பயன்படுத்தப்படுகிறது. அதன் [WEB] பகுதியில் static_path, https: 443, cert: /etc/opt/simplex/web.crt மற்றும் key: /etc/opt/simplex/web.key ஆகியவை குறிப்பிடப்பட்டுள்ளன. உங்கள் private authority பற்றி browser-க்குத் தெரியாது என்பதால், பொதுமக்களால் அங்கீகரிக்கப்பட்ட (publicly trusted) certificate-ஐப் பயன்படுத்த வேண்டிய இடம் இதுவே. ஆவணங்களில் உள்ள Docker quick start, இதற்காகவே Caddy-ஐ server-க்கு முன்னால் நிறுவி, தானாகவே certificate-ஐ வழங்குகிறது.
Tor வழியாக relay-ஐ அணுகுதல்
ஆவணங்கள் Tor பகுதியைக் கொண்டுள்ளன. இது Tor Project repository-லிருந்து Tor-ஐ நிறுவுகிறது மற்றும் /etc/tor/torrc-ல் ஒரு hidden service-ஐச் சேர்க்கிறது:
SOCKSPort 0
HiddenServiceNonAnonymousMode 1
HiddenServiceSingleHopMode 1
HiddenServiceDir /var/lib/tor/simplex-smp/
HiddenServicePort 5223 localhost:5223
HiddenServicePort 443 localhost:443இரண்டு mode வரிகளையும் கவனமாகப் படிக்கவும். Single hop மற்றும் non-anonymous என்பது relay-ன் சொந்த இருப்பிடம் மறைக்கப்படவில்லை என்பதைக் குறிக்கிறது. Onion முகவரி வேகமானது; இது வாடிக்கையாளர்களுக்கு (clients) ஒரு வழியை வழங்குகிறது, இது அவர்களின் IP முகவரியை உங்களிடம் வெளிப்படுத்தாது. ஆனால், server அதன் பொது IP முகவரியிலேயே கண்டறியக்கூடியதாக இருக்கும். /var/lib/tor/simplex-smp/hostname-லிருந்து பெறப்பட்ட onion hostname-ஐ, server முகவரியின் இறுதியில் ஒரு கமா (comma) இட்ட பிறகு சேர்க்க வேண்டும். server-ன் இருப்பிடத்தையும் மறைக்க விரும்பினால், அதற்கு வேறு configuration தேவை. VPS-ல் உண்மையான onion service-ஐ இயக்குதல் என்ற பகுதி இதற்கான மாற்றுகளை விளக்குகிறது. ஒவ்வொரு கருவியும் எதை மறைக்கிறது என்பதற்கும், VPN உடன் Tor-ஐ ஒப்பிடுதல் என்பதற்கும் உள்ள வேறுபாடு இங்கே நேரடியாகப் பொருந்தும்.
அச்சுறுத்தல் மாதிரி: self-hosting எதை மாற்றுகிறது
இது உங்களுக்கு என்ன பலனைத் தருகிறது. metadata (எந்த queues உள்ளன, அவை எப்போது வாசிக்கப்படுகின்றன, எந்த முகவரிகள் இணைகின்றன) உங்கள் கட்டுப்பாட்டில் உள்ள ஒரு machine-ல் இருக்கும், மேலும் அவற்றை எவ்வளவு காலம் வைத்திருக்க வேண்டும் என்பதை நீங்களே முடிவு செய்யலாம். மேலும், ஒரே நேரத்தில் கோரப்படக்கூடிய ஒரு பெரிய தொகுப்பின் (pool) ஒரு பகுதியாக நீங்கள் இருக்க மாட்டீர்கள்.
இது உங்களுக்கு என்ன பலனைத் தராது, தெளிவாகக் கூறினால்:
- encryption மாறாது. நீங்கள் இதை உருவாக்குவதற்கு முன்பும் செய்திகள் end to end encrypted ஆக இருந்தன, உருவாக்கிய பின்பும் அவை end to end encrypted ஆகவே இருக்கும். Self-hosting என்பது metadata தொடர்பான முடிவு, cryptography தொடர்பான முடிவு அல்ல.
- உங்கள் VPS provider உங்கள் IP முகவரிக்கு வரும் traffic-ஐப் பார்க்கிறது மற்றும் உங்கள் billing விவரங்களை வைத்திருக்கிறது. நீங்கள் ஒரு messaging operator-இடம் இருந்த நம்பிக்கையை ஒரு hosting operator-இடம் மாற்றியுள்ளீர்கள். நீங்கள் அந்த நம்பிக்கையை நீக்கவில்லை.
- உங்கள் relay ஒரு சிறிய கூட்டம். அது ஒரு வீட்டிற்கு மட்டும் சேவை செய்தால், அதனுடன் இணைவது அந்த வீட்டைக் காட்டிக்கொடுக்கும், மேலும் நீங்கள் அனுப்பும் ஒவ்வொரு invitation link-க்குள்ளும் அதன் hostname இருக்கும். ஒரு பரபரப்பான public relay அந்த ஒரு விஷயத்தில் உங்களை சிறப்பாக மறைக்கும், இதுவே உண்மையான பரிமாற்றம் (trade).
- சேவை கிடைக்கும் தன்மை (availability) இப்போது உங்கள் பொறுப்பு. disk நிறைந்தாலோ அல்லது box செயலிழந்தாலோ செய்திகள் வந்து சேருவது நின்றுவிடும், மேலும் உங்கள் தொடர்புகளுக்கு உங்களைத் தவிர்த்து மாற்று வழியில் செய்திகளை அனுப்ப வழி இருக்காது.
நீங்கள் சொந்தமாக வைத்திருக்கும் ஒரு box-ல் வைக்கும் எந்தவொரு private service-க்கும் இதே தர்க்கமே பொருந்தும், அது இந்த relay ஆக இருந்தாலும் அல்லது உங்கள் சொந்த VPS-ல் உள்ள ஒரு WireGuard VPN ஆக இருந்தாலும் சரி. metadata-வை எந்தத் தரப்பு பார்க்க வேண்டும் என்பதை நீங்கள் தேர்வு செய்கிறீர்கள். அதை நீங்கள் மறைந்து போகச் செய்யவில்லை.
செயல்படாதபோது
Service தொடங்குகிறது, ஆனால் உடனடியாக நின்றுவிடுகிறது. sudo journalctl -u smp-server -n 50-ஐப் படிக்கவும். Bind failure ஏற்பட்டால், எந்த port-ஐப் பயன்படுத்த முடியவில்லை என்பதை அது குறிப்பிடும். பின், எந்த process அந்த port-ஐ ஏற்கனவே பிடித்துள்ளது என்பதைப் பார்க்க sudo ss -tlnp | grep :443-ஐ இயக்கவும். புதிய server-ல் பொதுவாக இது nginx, Caddy அல்லது நீங்கள் ஒரு மணி நேரத்திற்கு முன் நிறுவிய XFTP server-ஆக இருக்கும்.
Init-ஆல் அதன் config-ஐ எழுத முடியவில்லை. /etc/opt/simplex உருவாவதற்கு முன்பே smp பயனர் மூலம் smp-server init-ஐ இயக்கினால் permission error ஏற்படும், ஏனெனில் /etc/opt-ன் உரிமையாளர் root ஆவார். முதலில் சரியான உரிமையாளருடன் அந்த directory-ஐ உருவாக்கவும், பின் init-ஐ மீண்டும் இயக்கவும்.
Clients-ஆல் relay-ஐ அடைய முடியவில்லை. dig +short smp1.example.com மூலம் பெயர் சரியான முகவரிக்கு resolve ஆகிறதா என்று சரிபார்க்கவும். பின் server-லிருந்து அல்லாமல், உங்கள் laptop-லிருந்து அந்த port-ஐச் சோதிக்கவும்: nc -vz smp1.example.com 5223. ss மூலம் socket திறந்திருப்பது தெரிந்தும், வெளியிலிருந்து connection தோல்வியடைந்தால், அது provider-ன் network firewall-ஐக் குறிக்கிறது. இது ufw-லிருந்து தனிப்பட்ட கட்டுப்பாடாகும்.
ஒரு contact உங்கள் relay வழியாக இணைய முடியவில்லை. நீங்கள் பகிர்ந்த முகவரியில் உள்ள fingerprint, /etc/opt/simplex/fingerprint-ல் உள்ள தற்போதைய உள்ளடக்கத்துடன் ஒத்துப்போக வேண்டும். நீங்கள் [AUTH]-ன் கீழ் create_password-ஐ அமைத்திருந்தால், அந்த முகவரியிலும் அதே கடவுச்சொல் இருக்க வேண்டும், இல்லையெனில் queue-வை உருவாக்க client-க்கு அனுமதி இருக்காது.
App-ல் server-ஐச் சேர்த்த பிறகு எதுவும் மாறவில்லை. இது திட்டமிடப்பட்டதுதான். புதிய contacts மட்டுமே புதிதாகச் சேர்க்கப்பட்ட relay-ஐப் பயன்படுத்தும். ஏற்கனவே உள்ள contacts தங்களுக்கு ஏற்கனவே இருக்கும் queue-களையே தொடர்ந்து பயன்படுத்தும்.
FAQ
SimpleX server-ஐ self-host செய்வது எனது செய்திகளின் பாதுகாப்பை அதிகரிக்குமா?
இல்லை, இது வடிவமைக்கப்பட்ட விதமே அப்படித்தான். SimpleX செய்திகளை சாதனங்களுக்கு இடையே end-to-end முறையில் encrypt செய்கிறது. எனவே, relay-ஐ யார் இயக்கினாலும், அவர்களிடம் decryption keys இருக்காது. Self-hosting செய்வதன் மூலம், அந்தச் செய்திகளைச் சுற்றியுள்ள metadata-வை யார் கவனிக்கிறார்கள் என்பது மட்டுமே மாறுகிறது: எந்தெந்த queues உள்ளன, அவை எப்போது வாசிக்கப்படுகின்றன, மற்றும் எந்த IP addresses இணைகின்றன என்பது போன்ற தகவல்கள். இது ஒரு metadata தொடர்பான முடிவு. வலுவான encryption-க்காக நீங்கள் self-host செய்கிறீர்கள் என்றால், அந்த encryption ஏற்கனவே அங்கு உள்ளது என்பதை நினைவில் கொள்க.
ஒரு SimpleX relay operator உண்மையில் எதைப் பார்க்க முடியும்?
இந்தத் திட்டத்தின் protocol/security.md இதைத் தெளிவாக விளக்குகிறது. ஒரு relay-ஆல் செய்திகளின் உள்ளடக்கத்தையோ அல்லது வகைகளையோ வாசிக்க முடியாது, தனிப்பட்ட செய்திகளைத் தெரியாமல் மாற்ற முடியாது, மேலும் active attack மூலம் end-to-end encryption-ஐ உடைக்க முடியாது. ஒரு queue-ன் பெறுநர் எப்போது online-ல் இருக்கிறார் என்பதை அறிய முடியும், queue வழியாகச் செல்லும் செய்திகளின் எண்ணிக்கையைக் கணக்கிட முடியும், பெறுநரின் IP address-ஐத் தெரிந்துகொள்ள முடியும், queue-ல் வரும் எதிர்காலச் செய்திகளைத் தடுக்க முடியும், அல்லது அந்த queue-ன் நிலை குறித்து தவறான தகவலைத் தர முடியும். Relay உங்கள் கட்டுப்பாட்டில் இருக்கும்போது, இந்த அதிகாரங்கள் உங்களிடம் இருக்கும்.
எனக்கு domain name மற்றும் TLS certificate தேவையா?
பயன்பாட்டிற்கு உகந்த அமைப்பிற்கு உங்களுக்கு ஒரு domain தேவை. உங்களிடம் domain இல்லையென்றால், smp-server init ஆனது --ip-ஐ ஏற்றுக்கொள்கிறது. Messaging port-க்கு பொதுவான அங்கீகாரம் பெற்ற (public authority) certificate தேவையில்லை: init தானாகவே அதன் சொந்த authority-ஐ உருவாக்குகிறது, மேலும் உங்கள் smp:// முகவரியில் உள்ள fingerprint-ஐ client pin செய்துகொள்கிறது. பொதுமக்களால் நம்பகமான certificate, விருப்பத்தேர்வாக உள்ள web information page-க்கு மட்டுமே தேவைப்படும். இது smp-server.ini-ன் [WEB] பகுதியில் cert மற்றும் key ஆக அமைக்கப்படுகிறது.
/etc/opt/simplex-ஐ நான் தொலைத்துவிட்டால் என்னவாகும்?
நீங்கள் வழங்கிய அனைத்து முகவரிகளும் வேலை செய்வதை நிறுத்திவிடும். அந்த directory-ல் தான் certificate authority உள்ளது, அதன் fingerprint உங்கள் server முகவரியில் பதிக்கப்பட்டுள்ளது. எனவே, server-ஐ மீண்டும் உருவாக்கினால் அது வேறு fingerprint-ஐ உருவாக்கும், அதன் விளைவாக அது வேறொரு server-ஆக மாறிவிடும். அந்த relay-ல் queues வைத்திருக்கும் தொடர்புகளை client பக்கத்திலிருந்து சரிசெய்ய முடியாது. அந்த directory-ஐ encrypt செய்து server-க்கு வெளியே backup எடுக்கவும், மேலும் ca.key-ஐ ஆவணங்களில் கூறியுள்ளபடி offline-ல் பாதுகாப்பாக வைக்கவும். ஏனெனில், அதை வைத்திருப்பவர் உங்கள் relay போல ஆள்மாறாட்டம் செய்ய முடியும்.
ஒரே VPS-ல் SMP relay மற்றும் XFTP file relay ஆகியவற்றை இயக்க முடியுமா?
ஆம், ஆனால் ஒரு முரண்பாட்டைச் சரிசெய்ய வேண்டும். XFTP server-ன் பரிந்துரைக்கப்பட்ட port 443 ஆகும், மேலும் இயல்பான SMP config-ல் port: 5223,443 பட்டியலிடப்பட்டுள்ளது. எனவே, இரண்டுமே ஒரே socket-ஐக் கோருகின்றன. அவற்றில் ஒன்றிற்கு 443 port-ஐ ஒதுக்குங்கள்: SMP server-க்கு port: 5223-ஐ அமைக்கவும், அல்லது file relay-ஐ இரண்டாவது IP address-க்கு அல்லது இரண்டாவது VPS-க்கு மாற்றவும். மேலும், உங்கள் வசம் உள்ள disk அளவிற்கு ஏற்ப storage quota-வை நிர்ணயம் செய்யுங்கள், ஏனெனில் file relay தான் அதிக disk மற்றும் bandwidth-ஐப் பயன்படுத்தும் அங்கமாகும்.