Menghubungkan Situs Clearnet ke .onion dengan Onion-Location
Punya situs biasa di internet, dan juga punya versi .onion-nya. Tapi orang yang membuka situs Anda lewat Tor Browser tidak pernah tahu kalau versi .onion-nya tersedia. Mereka tetap memakai jalur biasa, padahal bisa masuk lewat jalur yang lebih privat.
Di sinilah Onion-Location berperan.
Onion-Location adalah cara sederhana untuk memberi tahu pengunjung bahwa situs Anda punya versi .onion. Kalau fitur ini aktif, Tor Browser akan menampilkan tombol kecil di address bar. Satu klik, pengunjung langsung dipindahkan ke alamat .onion Anda.
Bagaimana Cara Kerjanya#
Onion-Location bukan pengalihan otomatis. Ia hanya memberi petunjuk. Tor Browser yang memutuskan menampilkan tawaran tersebut, dan pengunjung yang memutuskan mau pindah atau tidak.
Ada dua cara memasangnya:
- melalui header HTTP di web server (disarankan);
- melalui meta tag di dalam HTML (alternatif kalau tidak bisa menyentuh konfigurasi server).
Keduanya menghasilkan perilaku yang sama. Bedanya, header HTTP bisa mengikuti halaman yang sedang dibuka, sedangkan meta tag tidak.
Syarat yang Harus Dipenuhi#
Sebelum memasang, pastikan tiga syarat berikut terpenuhi. Kalau salah satu dilewat, Tor Browser akan mengabaikan petunjuk Anda.
- Nilai Onion-Location harus URL yang valid, dengan protokol
http:atauhttps:, dan hostname berakhiran.onion. - Halaman yang mengirim header tersebut harus disajikan lewat HTTPS.
- Halaman tersebut bukan situs onion.
Syarat HTTPS ini punya alasan yang masuk akal. Pada HTTP biasa, tidak ada jaminan keaslian isi respons. Header bisa diubah di tengah jalur oleh pihak yang menguasai jaringan, dan kalau itu terjadi, pengunjung bisa diarahkan ke alamat .onion palsu yang mirip dengan milik Anda. Dengan HTTPS, isi respons terlindungi dan perubahan seperti itu bisa dideteksi. Karena itulah petunjuk dari halaman non-HTTPS tidak bisa dipercaya.
Syarat ketiga juga penting: jangan memasang Onion-Location di dalam situs onion itu sendiri. Tujuannya hanya satu arah, dari clearnet menuju onion.
Prasyarat: Onion Service Sudah Berjalan#
Onion-Location hanya memberi petunjuk. Ia tidak membuat situs onion. Jadi sebelum memasang header, pastikan Onion Service Anda sudah hidup dan bisa dibuka lewat Tor Browser.
Kalau belum, konfigurasi dasar di torrc terlihat seperti ini:
HiddenServiceDir /var/lib/tor/situs-saya/
HiddenServiceVersion 3
HiddenServicePort 80 127.0.0.1:8080
Setelah Tor dijalankan ulang, alamat .onion Anda ada di dalam file hostname pada direktori tersebut.
Kalau ingin alamat yang mudah diingat, proses pembuatan vanity address bisa dibaca di artikel sebelumnya tentang alamat kustom .onion.
Memasang di Nginx#
Nginx adalah pilihan paling umum, dan caranya cukup satu baris.
1. Buka Konfigurasi Situs#
Edit file konfigurasi situs Anda. Lokasinya biasanya:
/etc/nginx/sites-available/default
atau
/etc/nginx/conf.d/situs-anda.conf
2. Tambahkan Header di Blok HTTPS#
Header harus berada di dalam blok server yang melayani HTTPS, bukan di blok port 80.
server {
listen 443 ssl http2;
server_name domain-anda.tld;
ssl_certificate /etc/letsencrypt/live/domain-anda.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain-anda.tld/privkey.pem;
add_header Onion-Location http://alamatanda.onion$request_uri;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Perhatikan bagian $request_uri. Itu bukan hiasan. Dengan variabel tersebut, pengunjung yang sedang membuka /artikel/tor akan dipindahkan ke alamat .onion halaman yang sama, bukan selalu ke halaman depan.
Kalau dihilangkan, semua orang akan mendarat di homepage dan harus mencari sendiri halaman yang tadi dibaca.
3. Uji Konfigurasi#
Selalu uji sebelum memuat ulang. Salah ketik satu tanda kurung bisa membuat seluruh situs mati.
sudo nginx -t
Kalau hasilnya seperti ini, konfigurasi sudah benar:
nginx: configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
4. Muat Ulang Nginx#
sudo systemctl reload nginx
Pakai reload, bukan restart. Reload tidak memutus koneksi yang sedang berjalan.
Memasang di Apache#
Untuk Apache 2.2 ke atas, dibutuhkan dua modul: headers dan rewrite.
1. Aktifkan Modul#
sudo a2enmod headers rewrite
sudo systemctl reload apache2
2. Tambahkan Header di Virtual Host HTTPS#
Buka file Virtual Host untuk port 443, lalu tambahkan satu baris di dalamnya.
<VirtualHost *:443>
ServerName domain-anda.tld
DocumentRoot /var/www/html
Header set Onion-Location "http://alamatanda.onion%{REQUEST_URI}s"
SSLEngine on
SSLCertificateFile /path/to/fullchain.pem
SSLCertificateKeyFile /path/to/privkey.pem
</VirtualHost>
Bagian %{REQUEST_URI}s berfungsi sama seperti $request_uri di nginx, yaitu membawa pengunjung ke halaman yang sama.
3. Muat Ulang Apache#
sudo systemctl reload apache2
Memasang di Caddy#
Caddy mengurus sertifikat HTTPS secara otomatis, jadi biasanya cukup satu baris tambahan di Caddyfile.
domain-anda.tld
header Onion-Location http://alamatanda.onion{path}
root * /var/www
file_server
Kalau alamat .onion disimpan sebagai variabel lingkungan, Caddy bisa membacanya langsung:
domain-anda.tld
header Onion-Location http://{$TOR_HOSTNAME}{path}
root * /var/www
file_server
Alternatif: Meta Tag di HTML#
Kalau Anda tidak punya akses ke konfigurasi web server, misalnya karena memakai layanan hosting berbagi, Onion-Location masih bisa dipasang lewat HTML.
Tambahkan baris berikut di dalam elemen <head>:
<meta http-equiv="onion-location" content="http://alamatanda.onion" />
Cara ini bekerja, tetapi ada keterbatasan yang perlu diketahui.
HTML tidak bisa membaca URL yang sedang dibuka. Akibatnya, semua pengunjung akan diarahkan ke alamat yang tertulis di situ, mau mereka sedang membuka halaman apa pun.
Jadi kalau situs Anda punya banyak halaman, header HTTP jauh lebih baik. Meta tag hanya cocok untuk situs satu halaman, atau sebagai jalan terakhir saat konfigurasi server benar-benar tidak bisa disentuh.
Cara Menguji Apakah Berhasil#
Ada dua cara memeriksanya, dan keduanya mudah.
1. Periksa Header dari Terminal#
Cara paling cepat untuk memastikan header benar-benar terkirim:
wget --server-response --spider https://domain-anda.tld
atau kalau lebih nyaman memakai curl:
curl -I https://domain-anda.tld
Yang dicari adalah baris seperti ini di antara header respons:
onion-location: http://alamatanda.onion/
Kalau baris itu muncul, berarti server sudah mengirimkannya. Kalau tidak muncul, berarti ada yang perlu diperiksa lagi.
2. Buka Situs di Tor Browser#
Ini uji yang sebenarnya, karena hanyalah Tor Browser yang bisa menampilkan tawarannya.
Buka situs Anda lewat Tor Browser, lalu lihat address bar. Kalau berhasil, akan muncul tombol atau pil berwarna ungu dengan tulisan Onion available. Klik tombol itu, dan Anda akan dipindahkan ke alamat .onion.
Kalau header sudah terkirim tetapi tombolnya tidak muncul, coba tutup dan buka ulang Tor Browser, atau tunggu sebentar. Tor Browser kadang butuh waktu untuk menyegarkan daftar onion service.
Hal yang Sering Membuat Gagal#
Beberapa penyebab umum, diurutkan dari yang paling sering:
- Header dipasang di blok port 80. Harus di blok 443. Onion-Location dari halaman non-HTTPS akan diabaikan.
- Situs Anda di belakang CDN atau reverse proxy. Beberapa layanan membuang atau menulis ulang header yang tidak dikenal. Kalau header tidak muncul di hasil
curl -I, periksa pengaturan header di panel CDN Anda, atau uji langsung ke server tanpa melewati CDN. - Sertifikat HTTPS bermasalah. Kalau sertifikat tidak valid, halaman dianggap bukan HTTPS yang sah, dan Tor Browser akan mengabaikan petunjuknya.
- Alamat
.onionsalah ketik. Satu karakter salah, dan pengunjung akan diarahkan ke alamat yang tidak ada. - Header ditambahkan di situs onion. Ini dilarang oleh spesifikasi dan akan diabaikan.
- Onion Service-nya belum jalan. Pastikan dulu alamat
.onionbisa dibuka lewat Tor Browser sebelum memasang petunjuk ke sana.
Kenapa Ini Layak Dipasang#
Onion-Location terlihat seperti detail kecil. Satu header, satu baris konfigurasi.
Tapi dampaknya nyata. Pengunjung yang memang sudah memilih Tor sebagai jalur mereka tidak perlu menebak-nebak atau mencari alamat .onion Anda secara manual. Petunjuknya datang tepat di tempat mereka berada, pada saat mereka membukanya.
Yang lebih penting, ini menutup satu celah kepercayaan. Alamat .onion yang ditemukan lewat mesin pencari belum tentu asli, siapa pun bisa menyebarkan alamat palsu. Dengan Onion-Location, alamat yang ditawarkan berasal langsung dari server Anda sendiri, lewat koneksi HTTPS yang terverifikasi.
Situs Tor Project sendiri memakai cara ini. Kalau Anda membuka halaman dokumentasi mereka lewat Tor Browser, tombol ungu itu muncul, dan mengarah ke versi .onion dari halaman yang sedang dibaca.
Satu header. Pengunjung yang lebih aman, dan jalur yang lebih privat untuk siapa saja yang memilihnya.


Comments
No comments yet. Start the conversation.