VPS-ல் சொந்தமாக SimpleX chat server நிறுவுவது எப்படி?
VPS-ல் SimpleX SMP relay-ஐ நிறுவுவதற்கான முழுமையான வழிகாட்டி. இதில் TLS அமைப்பு, unprivileged service user, port மேலாண்மை மற்றும் தரவு பாதுகாப்பு குறித்த முக்கிய தகவல்கள் உள்ளன.
சுயமாக ஹோஸ்ட் செய்யப்படும் 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-ல் கணக்குகள் (accounts), தொடர்புப் பட்டியல்கள் (contact lists) அல்லது உரையாடல் வரலாறு (chat history) எதுவும் சேமிக்கப்படுவதில்லை. இது 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 உங்கள் கட்டுப்பாட்டில் இருக்கும். ஒரு attacker முழுமையாகக் கட்டுப்படுத்தும் 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. இந்தத் திட்டம் அந்த இரண்டு பதிப்புகளுக்காகவே பிரத்யேகமாக உருவாக்கப்பட்ட release binaries-ஐ x86-64 மற்றும் aarch64 கட்டமைப்புகளில் வெளியிடுகிறது.
- உங்கள் VPS-ஐச் சுட்டிக்காட்டும் A record கொண்ட ஒரு domain name. உங்களிடம் IPv6 இருந்தால், ஒரு AAAA record-ம் தேவை. ஆவணங்கள் உதாரணத்திற்கு
smp1.example.com-ஐப் பயன்படுத்துகின்றன. - Root அல்லது
sudoஅணுகல், மற்றும் firewall-ஐ மாற்றும்போது திறந்து வைத்திருக்க வேண்டிய இரண்டாவது SSH session. - சர்வரின் அடையாளமாக config directory இருப்பதால், அதன் backup-ஐச் சேமிக்க சர்வர் அல்லாத வேறொரு இடம்.
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 கோப்பகத்தை உருவாக்க இடமளிக்காது.
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 checksum-களுடன் ஒப்பிடவும். இந்தத் திட்டம் வெளியீட்டு checksum-களை SimpleX Chat key FB44AF81A45BDE327319797C85107E357D4A17FC மூலம் கையொப்பமிடுகிறது, இது server page-ல் ஆவணப்படுத்தப்பட்டுள்ளது. எனவே, hash-ஐப் படித்த பக்கத்தை மட்டும் நம்புவதற்குப் பதிலாக, கையொப்பத்தை (signature) நீங்கள் சரிபார்க்கலாம்.
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-ன் கீழ் ஒரு unprivileged user-ஆக இயக்குதல்
/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-ஐ non-root process-களால் அணுக முடியாது என்பதால், இது இல்லையெனில் daemon-ஆல் 80 அல்லது 443 ports-ல் bind செய்ய முடியாது. நீங்கள் அந்த ports-ஐப் பயன்படுத்தினால் இதைச் சேர்க்கவும். ஒவ்வொரு subscribed client-ம் ஒரு open 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 குறிப்பிடப்பட்டிருக்க வேண்டும். Sudo உரிமைகள் ஏதுமின்றி ஒரு daemon-ஐ அதன் சொந்த account-ல் இயக்குவது, VPS-ல் per-service accounts பகுதியில் விவரிக்கப்பட்டுள்ள அதே நடைமுறையாகும். இதுவே ஒரு network daemon-ல் உள்ள bug, root shell-ஆக மாறுவதைத் தடுக்கிறது.
எந்தெந்த ports-ஐத் திறக்க வேண்டும், எதை மூடி வைக்க வேண்டும்
ஆவணங்கள் மூன்று ports-ஐக் குறிப்பிடுகின்றன: 5223/tcp, 443/tcp மற்றும் 80/tcp. Port 5223 என்பது SMP transport ஆகும். வழங்கப்பட்ட configuration, port: 5223,443-ஐ [TRANSPORT]-ன் கீழ் அமைக்கிறது. எனவே, அதே protocol 443-லும் பதிலளிக்கும். பல கட்டுப்பாடுகள் கொண்ட network-கள் 443-ஐத் தவிர மற்ற outbound இணைப்புகளை அனுமதிப்பதில்லை என்பதால் இது முக்கியமானது. 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-ஐயும் நீக்கும் என்பதால், இதை loopback-ல் மட்டுமே வைத்திருக்க வேண்டும். மேலும், [AUTH]-ன் கீழ் admin மற்றும் user கடவுச்சொற்களை அமைக்க வேண்டும். நீங்கள் இந்த tool-க்கு புதியவர் என்றால், VPS-ல் ufw-ன் அடிப்படைகள் என்ற கட்டுரை, rule வரிசை மற்றும் உங்களை நீங்களே பூட்டிக்கொள்ளாமல் இருப்பது எப்படி என்பதை விளக்குகிறது.
மற்றொரு கட்டுப்பாட்டு அம்சம் பலரைச் சிக்கலில் ஆழ்த்துகிறது. பெரும்பாலான சேவை வழங்குநர்கள், server-ல் உள்ள ufw-க்குத் தனிப்பட்டதாக, அவர்களின் control panel-ல் ஒரு network firewall-ஐ இயக்குகிறார்கள். ஒரு port ufw-ல் திறக்கப்பட்டிருந்தாலும், அது உங்களை வந்தடைவதற்கு முன்பே அந்த firewall-ஆல் தடுக்கப்படலாம்.
உங்கள் clients-க்குத் தேவையான server முகவரி
smp://<fingerprint>[:<password>]@<public_hostname>[,<onion_hostname>]அந்த string மட்டுமே client-side அமைப்பிற்குத் தேவையான முழுமையான தகவலாகும். அதை app-ன் server அமைப்புகளில் (settings) உள்ளிடவும் அல்லது app காட்டும் QR code-ஐ scan செய்ய அனுமதிக்கவும். QR code-ல் password-ம் அடங்கியுள்ளதாக ஆவணங்கள் குறிப்பிடுகின்றன; எனவே, அதை scan செய்பவர் உங்கள் server வழியாகச் செய்திகளைப் பெற முடியும்.
ஆவணப்படுத்தப்பட்ட ஒரு செயல்பாடு அனைவரையும் ஆச்சரியப்படுத்துகிறது. app-ல் உங்கள் server-ஐச் சேர்த்த பிறகு, நீங்கள் உருவாக்கும் புதிய தொடர்புகளுக்கு (contacts) மட்டுமே இது பொருந்தும். ஏற்கனவே உள்ள தொடர்புகள் அவை உருவாக்கப்பட்ட relays-லேயே இருக்கும்; அவை தானாக மாறாது. இதனால்தான், ஒரு relay-ஐ மாற்றிய மறுநாளே அதை நீங்கள் அணைக்க முடியாது.
XFTP file relay-ஐ சேர்த்தல்
XFTP (SimpleX file transfer protocol) என்பது நெட்வொர்க்கின் கோப்பு பரிமாற்றப் பகுதியாகும். இது தனித்தனி முகவரியைக் கொண்ட ஒரு தனி daemon ஆகும். திட்டத்தின் XFTP அறிவிப்பின்படி, relay-களில் கோப்பு மெட்டாடேட்டா (metadata) எதுவும் இருக்காது. அவை 256kb, 1mb அல்லது 4mb அளவுள்ள தனித்தனி துண்டுகளை மட்டுமே பார்க்கும். anonymous credentials மூலம் இதற்கான அணுகல் அங்கீகரிக்கப்படுகிறது. ஒரு அனுப்பும் நபர், ஒரு கோப்பின் துண்டுகளைப் பல relay-களுக்குப் பிரித்து அனுப்ப முடியும். எனவே, உங்கள் சர்வரில் முழுமையான கோப்புகள் இருக்காது, துண்டுகள் மட்டுமே இருக்கும்.
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 சர்வரின் ஆவணப்படுத்தப்பட்ட port 443 ஆகும், SMP கட்டமைப்பிலும் 443 குறிப்பிடப்பட்டுள்ளது. ஒரே முகவரியில் இரண்டு process-கள் ஒரே port-ஐ bind செய்ய முடியாது. எனவே, ஒரு VPS-ல் ஏதேனும் ஒன்றை மாற்ற வேண்டும். எளிமையான தீர்வு, SMP-ன் [TRANSPORT] பகுதியில் port: 5223-ஐ அமைத்துவிட்டு, 443-ஐ file relay-க்கு விட்டுவிடுவதுதான். ஆனால், கட்டுப்பாடுகள் உள்ள நெட்வொர்க்குகளில் உள்ள வாடிக்கையாளர்கள் 443 fallback-ஐப் பயன்படுத்த முடியாது என்பது இதன் குறைபாடு. இதற்கு மாற்றாக, அதே VPS-ல் இரண்டாவது IP முகவரியைப் பயன்படுத்துவது அல்லது இரண்டாவது VPS-ஐப் பயன்படுத்துவது சிறந்ததாகும்.
கோட்டாவை (quota) சரியாகத் தீர்மானிக்கவும். -q '20gb' என்பது உங்களிடம் உள்ள வட்டு இடத்தைப் பற்றிய வாக்குறுதியாகும். file relay தான் வட்டு இடத்தையும் அலைவரிசையையும் (bandwidth) அதிகம் பயன்படுத்தும் பகுதி. message relay இவை இரண்டையும் மிகக் குறைவாகவே பயன்படுத்தும்.
வட்டில் சேமிக்கப்படுபவை மற்றும் பேக்கப் (backup) மூலம் மீட்டமைக்கப்படுபவை
இரண்டு கோப்பகங்கள் (directories) முக்கியமானவை. /etc/opt/simplex/ என்பது அடையாளத்தைக் குறிக்கிறது: smp-server.ini, சர்வர் சான்றிதழ் (certificate) மற்றும் சாவி (key), ca.key, மற்றும் fingerprint. /var/opt/simplex/ என்பது நிலையை (state) குறிக்கிறது: smp-server-store.log என்பது வரிசைகளையும் (queues), restore_messages: on இருக்கும்போது, விநியோகிக்கப்படாத செய்திகளையும், தினசரி புள்ளிவிவரக் கோப்புடன் சேர்த்து வைத்திருக்கிறது.
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) எதைக் குறிக்கிறது என்பதில் தெளிவாக இருங்கள். இது செய்திகளின் காப்பகம் அல்ல: வரிசையில் உள்ளவை, இந்த relay-யிடம் இல்லாத சாவிகளுக்கான குறியாக்க உரைகள் (ciphertext) ஆகும். மேலும், வழங்கப்பட்ட [STORE_LOG] கட்டமைப்பு 21 நாட்களுக்குப் பிறகு செய்திகளை நீக்கிவிடும். இது சர்வரின் அடையாளத்தின் நகலாகும், இதில் ca.key-ம் அடங்கும். எனவே, இந்தக் கோப்பைப் பெறுபவர் எவரும் உங்கள் தொடர்புகளிடம் உங்களைப் போலவே நடித்து relay-யாகச் செயல்பட முடியும். இதை குறியாக்கம் (encrypt) செய்து, சர்வர் இருக்கும் கணினிக்கு வெளியே பாதுகாப்பாக வைக்கவும்.
இதன் பலன் மீட்டமைப்பில் (restore) உள்ளது. /etc/opt/simplex-ஐ ஒரு புதிய VPS-ல் மீண்டும் பதிவேற்றி, அதே DNS பெயரை அதற்குச் சுட்டிக்காட்டினால், fingerprint மாறாது. எனவே, நீங்கள் வழங்கிய அனைத்து முகவரிகளும் தொடர்ந்து செயல்படும். அந்த கோப்பகத்தை இழந்துவிட்டால், மீட்டெடுக்க முடியாது: புதிய நிறுவல் (install) என்பது புதிய fingerprint-ஐ உருவாக்கும். இதன் பொருள் புதிய முகவரி உருவாகும், இதனால் உங்கள் relay வழியாகத் தொடர்புகொண்ட அனைவரும் துண்டிக்கப்படுவார்கள்.
TLS: இரண்டு வெவ்வேறு பணிகளைச் செய்யும் சான்றிதழ்கள்
SMP transport பொதுவான certificate authority-ஐப் பயன்படுத்துவதில்லை. Init ஒரு private authority மற்றும் server certificate-ஐ உருவாக்குகிறது. அந்த authority-ன் fingerprint, server முகவரிக்குள் பயணிக்கிறது. Server வழங்கும் சான்றிதழை, client ஏற்கனவே சேமிக்கப்பட்ட (pinned) fingerprint-உடன் ஒப்பிட்டுச் சரிபார்க்கிறது. இதுவே machine-in-the-middle தாக்குதல்களிலிருந்து client-to-server இணைப்பைப் பாதுகாக்கும் முறையாகத் திட்டத்தால் விவரிக்கப்படுகிறது. அந்த port-ல் இயங்குவதற்கு ACME (automatic certificate management environment) client கிடையாது. எனவே, SMP_SERVER_CFG_PATH-ஐ அமைத்து, smp-server cert-ஐ இயக்குவதன் மூலம் சான்றிதழ் சுழற்சி (rotation) கைமுறையாகச் செய்யப்பட வேண்டும்.
விருப்பத்தேர்வாக உள்ள தகவல் பக்கம் (information page) இரண்டாவது சான்றிதழைப் பயன்படுத்துகிறது. அதன் [WEB] பகுதியில் static_path, https: 443, cert: /etc/opt/simplex/web.crt மற்றும் key: /etc/opt/simplex/web.key ஆகியவை குறிப்பிடப்பட்டுள்ளன. உலாவிகளுக்கு (browser) உங்கள் private authority பற்றித் தெரியாது என்பதால், பொது நம்பிக்கைக்குரிய (publicly trusted) சான்றிதழை இங்கே மட்டுமே பயன்படுத்த வேண்டும். இதற்காகவே, ஆவணங்களின் Docker quick start வழிகாட்டி, Caddy-ஐ server-க்கு முன்னால் நிறுவி, தானாகவே சான்றிதழை வழங்குகிறது.
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 முகவரி வேகமானது; இது உங்கள் IP முகவரியை வெளிப்படுத்தாமல் வாடிக்கையாளர்கள் உங்களை அணுக வழிவகுக்கிறது, ஆனால் server அதன் public IP மூலம் கண்டறியக்கூடியதாகவே இருக்கும். /var/lib/tor/simplex-smp/hostname-லிருந்து பெறப்பட்ட onion hostname-ஐ, server முகவரியின் இறுதியில் கமா (comma) இட்டுச் சேர்க்க வேண்டும். server-ன் இருப்பிடத்தையும் மறைக்க விரும்பினால், அதற்கு வேறு கட்டமைப்பு தேவை. VPS-ல் உண்மையான onion service-ஐ இயக்குதல் என்ற பகுதி இதற்கான மாற்றுகளை விளக்குகிறது. ஒவ்வொரு கருவியும் எதை மறைக்கிறது என்பதற்கும், VPN-உடன் ஒப்பிடும்போது Tor என்பதற்கும் உள்ள வேறுபாடு இங்கே நேரடியாகப் பொருந்தும்.
அச்சுறுத்தல் மாதிரி: சுய-வழங்கலில் (self-hosting) என்ன மாறுகிறது
இது உங்களுக்கு என்ன பலனைத் தருகிறது. மெட்டாடேட்டா (எந்த queues உள்ளன, அவை எப்போது படிக்கப்படுகின்றன, எந்த முகவரிகள் இணைகின்றன) நீங்கள் கட்டுப்படுத்தும் கணினியில் இருக்கும், மேலும் அதை எவ்வளவு காலம் வைத்திருக்க வேண்டும் என்பதை நீங்களே தீர்மானிக்கலாம். மேலும், ஒரே நேரத்தில் கோரப்படக்கூடிய ஒரு பெரிய குழுவின் ஒரு பகுதியாக நீங்கள் இருக்க மாட்டீர்கள்.
இது உங்களுக்கு என்ன பலனைத் தராது, தெளிவாகக் கூறினால்:
- குறியாக்கத்தில் (encryption) மாற்றம் இல்லை. நீங்கள் இதை உருவாக்குவதற்கு முன்பே செய்திகள் end to end encrypted ஆக இருந்தன, இப்போதும் அவை end to end encrypted ஆகத்தான் உள்ளன. சுய-வழங்கல் என்பது மெட்டாடேட்டா தொடர்பான முடிவே தவிர, குறியாக்கம் தொடர்பான முடிவு அல்ல.
- உங்கள் VPS வழங்குநர் உங்கள் IP முகவரிக்கு வரும் டிராஃபிக்கைப் பார்க்கிறார் மற்றும் உங்கள் கட்டண விவரங்களை வைத்திருக்கிறார். நீங்கள் ஒரு மெசேஜிங் ஆபரேட்டரிடமிருந்து ஹோஸ்டிங் ஆபரேட்டருக்கு நம்பிக்கையை மாற்றியுள்ளீர்கள். நீங்கள் அதை நீக்கவில்லை.
- உங்கள் ரிலே (relay) ஒரு சிறிய கூட்டம். அது ஒரு வீட்டிற்கு மட்டும் சேவை செய்தால், அதனுடன் இணைவது அந்த வீட்டைக் காட்டிக்கொடுக்கும், மேலும் நீங்கள் அனுப்பும் ஒவ்வொரு அழைப்பு இணைப்பிலும் அதன் hostname இருக்கும். ஒரு பிஸியான பொது ரிலே அந்த ஒரு விஷயத்தில் உங்களை சிறப்பாக மறைக்கும், இதுவே உண்மையான பரிமாற்றம். ஒரு தனியார் தேடல் சேவையகமும் (search server) இதே தன்மையைக் கொண்டது, அதனால்தான் உங்கள் சொந்த VPS-ல் SearXNG உண்மையில் எதை மறைக்கிறது என்பது எத்தனை பேர் உங்களுடன் அந்த instance-ஐப் பகிர்ந்து கொள்கிறார்கள் என்பதைப் பொறுத்தது.
- கிடைக்கும் தன்மை (availability) இப்போது உங்கள் பொறுப்பு. வட்டு (disk) நிறைந்தாலோ அல்லது கணினி செயலிழந்தாலோ செய்திகள் வந்து சேருவது நின்றுவிடும், மேலும் உங்கள் தொடர்புகளுக்கு உங்களைத் தவிர்த்து மாற்று வழியில் செய்தியை அனுப்ப வழி இருக்காது.
நீங்கள் சொந்தமாக வைத்திருக்கும் ஒரு பெட்டியில் (box) நீங்கள் வைக்கும் எந்தவொரு தனியார் சேவைக்கும் இதே தர்க்கமே பொருந்தும், அது இந்த ரிலேவாக இருந்தாலும் சரி அல்லது உங்கள் சொந்த VPS-ல் உள்ள WireGuard VPN ஆக இருந்தாலும் சரி. மெட்டாடேட்டாவை எந்தத் தரப்பு பார்க்க வேண்டும் என்பதை நீங்கள் தேர்வு செய்கிறீர்கள். அதை நீங்கள் மறையச் செய்யவில்லை.
செயல்படாதபோது
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-ஐ அமைத்திருந்தால், அந்த முகவரியிலும் அதே password இருக்க வேண்டும். இல்லையெனில், queue-வை உருவாக்க client-க்கு அனுமதி இருக்காது.
App-ல் server-ஐச் சேர்த்த பிறகு எதுவும் மாறவில்லை. இது திட்டமிடப்பட்டதுதான். புதிய contacts மட்டுமே புதிதாகச் சேர்க்கப்பட்ட relay-ஐப் பயன்படுத்தும். ஏற்கனவே உள்ள contacts தங்களுக்கு ஏற்கனவே உள்ள queue-களையே தொடர்ந்து பயன்படுத்தும்.
FAQ
SimpleX server-ஐ நீங்களே host செய்வது உங்கள் செய்திகளின் பாதுகாப்பை அதிகரிக்குமா?
இல்லை, இது வடிவமைக்கப்பட்ட விதமே அப்படித்தான். SimpleX செய்திகளை சாதனங்களுக்கு இடையே end-to-end முறையில் encrypt செய்கிறது. எனவே, relay-ஐ யார் இயக்கினாலும், அவர்களிடம் decryption keys இருக்காது. நீங்களே host செய்வதன் மூலம், அந்தச் செய்திகளைச் சுற்றியுள்ள metadata-வை யார் கவனிக்கிறார்கள் என்பது மட்டுமே மாறுகிறது: எந்தெந்த queues உள்ளன, அவை எப்போது வாசிக்கப்படுகின்றன, எந்த IP addresses இணைகின்றன போன்றவை. இது metadata தொடர்பான ஒரு முடிவு. வலுவான encryption-க்காகவே நீங்கள் self-hosting செய்கிறீர்கள் என்றால், அந்த 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-க்கு பொதுவான authority-யிடமிருந்து certificate பெற வேண்டிய அவசியமில்லை: init தானாகவே அதன் சொந்த authority-யை உருவாக்குகிறது, மேலும் உங்கள் smp:// முகவரியில் உள்ள fingerprint-ஐ client pin செய்துகொள்கிறது. பொதுமக்களால் நம்பகமான certificate, விருப்பத்தேர்வாக உள்ள web information page-க்கு மட்டுமே தேவை. இது smp-server.ini-ன் [WEB] பகுதியில் cert மற்றும் key என configure செய்யப்படுகிறது.
/etc/opt/simplex-ஐ நான் தொலைத்துவிட்டால் என்ன நடக்கும்?
நீங்கள் வழங்கிய அனைத்து முகவரிகளும் வேலை செய்வதை நிறுத்திவிடும். அந்த directory-யில்தான் certificate authority உள்ளது, அதன் fingerprint உங்கள் server முகவரியில் பதிக்கப்பட்டுள்ளது. எனவே, server-ஐ மீண்டும் உருவாக்கினால், அது வேறு fingerprint-ஐ உருவாக்கும், அதன் விளைவாக அது வேறொரு server-ஆக மாறிவிடும். அந்த relay-ல் queues வைத்திருக்கும் தொடர்புகளை client பக்கத்திலிருந்து சரிசெய்ய முடியாது. அந்த directory-யை encrypt செய்து, server-க்கு வெளியே backup எடுத்துக்கொள்ளுங்கள். மேலும், ca.key-ஐ ஆவணங்களில் குறிப்பிட்டுள்ளபடி offline-ல் பாதுகாப்பாக வையுங்கள், ஏனெனில் அதை வைத்திருப்பவர் உங்கள் relay போல நடித்து மோசடி செய்ய முடியும்.
SMP relay மற்றும் XFTP file relay ஆகிய இரண்டையும் ஒரே VPS-ல் இயக்க முடியுமா?
ஆம், ஆனால் ஒரு முரண்பாட்டைச் சரிசெய்ய வேண்டும். XFTP server-ன் ஆவணப்படுத்தப்பட்ட port 443 ஆகும், மேலும் இயல்புநிலை SMP config-ல் port: 5223,443 பட்டியலிடப்பட்டுள்ளது. எனவே, இரண்டுமே ஒரே socket-ஐப் பயன்படுத்த முயலும். அவற்றில் ஒன்றிற்கு 443-ஐ ஒதுக்குங்கள்: SMP server-க்கு port: 5223-ஐ set செய்யுங்கள், அல்லது file relay-ஐ இரண்டாவது IP address-க்கு அல்லது இரண்டாவது VPS-க்கு மாற்றுங்கள். மேலும், உங்கள் வசம் உள்ள disk அளவிற்கு ஏற்ப storage quota-வை நிர்ணயித்துக் கொள்ளுங்கள், ஏனெனில் file relay தான் அதிக disk மற்றும் bandwidth-ஐப் பயன்படுத்தும் அங்கமாகும்.