Onion-Location adalah cara mudah untuk mengiklankan situs onion kepada pengguna.
Anda dapat mengonfigurasi web server agar menampilkan Header Onion-Location atau menambahkan atribut HTML <meta> pada situs web.
Agar header valid, ketentuan berikut harus dipenuhi:
- Nilai Onion-Location harus berupa URL yang valid dengan protokol http: atau https: dan hostname .onion.
- Halaman web yang mendefinisikan header Onion-Location harus disajikan melalui HTTPS.
- Halaman web yang mendefinisikan header Onion-Location tidak boleh merupakan situs onion.
Di halaman ini, perintah untuk mengelola web server didasarkan pada sistem operasi mirip Debian dan mungkin berbeda pada sistem lain.
Periksa dokumentasi web server dan sistem operasi Anda.
Apache
Untuk mengonfigurasi header ini di Apache 2.2 atau yang lebih baru, Anda perlu mengaktifkan modul headers dan rewrite serta mengedit berkas Virtual Host situs web.
Langkah 1. Aktifkan modul headers dan rewrite lalu muat ulang Apache2
$ sudo a2enmod headers rewrite
$ sudo systemctl reload apache2
Jika Anda mendapatkan pesan kesalahan, ada sesuatu yang tidak beres dan Anda tidak dapat melanjutkan sampai Anda menemukan mengapa ini tidak berhasil.
Langkah 2. Tambahkan header Onion-Location ke berkas konfigurasi Virtual Host Anda
Header set Onion-Location "http://your-onion-address.onion%{REQUEST_URI}s"
Di mana your-onion-address.onion adalah alamat Onion Service yang ingin Anda arahkan dan {REQUEST_URI} adalah komponen path dari URI yang diminta, seperti "/index.html".
Contoh Virtual Host:
<VirtualHost *:443>
ServerName <your-website.tld>
DocumentRoot /path/to/htdocs
Header set Onion-Location "http://your-onion-address.onion%{REQUEST_URI}s"
SSLEngine on
SSLCertificateFile "/path/to/www.example.com.cert"
SSLCertificateKeyFile "/path/to/www.example.com.key"
</VirtualHost>
Langkah 3. Muat ulang Apache
Muat ulang layanan apache2, agar perubahan konfigurasi Anda berlaku:
$ sudo systemctl reload apache2
Jika Anda mendapatkan pesan kesalahan, ada sesuatu yang tidak beres dan Anda tidak dapat melanjutkan sampai Anda menemukan mengapa ini tidak berhasil.
Langkah 4. Menguji Onion-Location Anda
Untuk menguji apakah Onion-Location berfungsi, ambil header HTTP situs web, misalnya:
$ wget --server-response --spider your-website.tld
Cari entri onion-location dan alamat Onion Service.
Atau, buka situs web di Tor Browser dan sebuah pil ungu akan muncul di bilah alamat.
Nginx
Untuk mengonfigurasi header Onion-Location, operator layanan harus terlebih dahulu mengonfigurasi Onion service.
Langkah 1. Buat Onion service dengan mengatur hal berikut di torrc:
HiddenServiceDir /var/lib/tor/hs-my-website/
HiddenServiceVersion 3
HiddenServicePort 80 unix:/var/run/tor-hs-my-website.sock
Langkah 2. Edit berkas konfigurasi situs web
Di /etc/nginx/conf.d/<your-website>.conf tambahkan header Onion-Location dan alamat Onion Service.
Sebagai contoh:
add_header Onion-Location http://<your-onion-address>.onion$request_uri;
Berkas konfigurasi dengan Onion-Location seharusnya terlihat seperti ini:
server {
listen 80;
listen [::]:80;
server_name <your-website.tld>;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name <your-website.tld>;
# managed by Certbot - https://certbot.eff.org/
ssl_certificate /etc/letsencrypt/live/<hostname>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<hostname>/privkey.pem;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header Onion-Location http://<your-onion-address>.onion$request_uri;
# managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
access_log /var/log/nginx/<hostname>-access.log;
index index.html;
root /path/to/htdocs;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen unix:/var/run/tor-hs-my-website.sock;
server_name <your-onion-address>.onion;
access_log /var/log/nginx/hs-my-website.log;
index index.html;
root /path/to/htdocs;
}
Langkah 3. Uji konfigurasi situs web
$ sudo nginx -t
Web server harus mengonfirmasi bahwa sintaks baru berfungsi:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Langkah 4. Mulai ulang nginx
$ sudo nginx -s reload
Jika Anda mendapatkan pesan kesalahan, ada sesuatu yang tidak beres dan Anda tidak dapat melanjutkan sampai Anda menemukan mengapa ini tidak berhasil.
Langkah 5. Menguji Onion-Location Anda
Untuk menguji apakah Onion-Location berfungsi, ambil header HTTP situs web, misalnya:
$ wget --server-response --spider your-website.tld
Cari entri onion-location dan alamat Onion Service.
Atau, buka situs web di Tor Browser dan sebuah pil ungu akan muncul di bilah alamat.
Caddy
Caddy memiliki fitur HTTPS otomatis secara default, sehingga Caddy menyediakan sertifikat TLS Anda dan mengurus pengalihan HTTP ke HTTPS untuk Anda.
Jika Anda menggunakan Caddy 2, untuk menyertakan header Onion-Location, tambahkan deklarasi berikut pada Caddyfile Anda:
header Onion-Location http://<your-onion-address>.onion{path}
Jika Anda menjalankan situs statis dan memiliki alamat onion dalam variabel lingkungan $TOR_HOSTNAME, Caddyfile Anda akan terlihat seperti ini:
your-website.tld
header Onion-Location http://{$TOR_HOSTNAME}{path}
root * /var/www
file_server
Menguji: Uji dengan:
$ wget --server-response --spider your-website.tld
Cari entri onion-location dan alamat Onion Service.
Atau, buka situs web di Tor Browser dan sebuah pil ungu akan muncul di bilah alamat.
Menggunakan atribut <meta> HTML
Perilaku Onion-Location yang identik mencakup opsi untuk mendefinisikannya sebagai atribut HTML <meta> http-equiv.
Ini dapat digunakan oleh situs web yang lebih memilih (atau perlu) mendefinisikan Onion-Location dengan memodifikasi konten HTML yang disajikan alih-alih menambahkan header HTTP baru.
Header Onion-Location akan setara dengan sebuah <meta http-equiv="onion-location" content="http://<your-onion-service-address>.onion" /> yang ditambahkan di elemen head HTML pada halaman web. Ganti <your-onion-service-address.onion> dengan Layanan Onion yang ingin Anda arahkan ulang.
Keterbatasan
HTML tidak dapat membaca URL yang diminta dan menyisipkannya secara dinamis ke dalam tag <meta> http-equiv.
Karena alasan ini, pengunjung selalu dialihkan ke URL .onion yang ditentukan pada bagian content dari tag meta, terlepas dari subhalaman mana yang sedang mereka buka.
Karena itu, jika memungkinkan, kami merekomendasikan menggunakan salah satu metode di atas.
Informasi lebih lanjut
Baca spesifikasi Onion-Location.