Skip to content

How to host a TON Site

Hosting a TON Site requires a reverse proxy that accepts inbound ADNL connections and forwards HTTP to a local web server, plus a .ton domain record pointing to that proxy’s ADNL address.

A reverse proxy accepts inbound ADNL connections and forwards HTTP requests to the local web server. Two implementations are available: rldp-http-proxy (manual key generation) and tonutils-reverse-proxy (automatic key generation with QR-code domain linking). Follow the steps in How to set up a reverse proxy to configure either option.

After configuring the reverse proxy, assign the ADNL address to the .ton domain:

  1. Open the domain in the dns.ton.org management interface or the TON wallet app that supports DNS record editing.
  2. Paste the ADNL address into the Site field.
  3. Confirm the transaction with the domain owner wallet.

The dns_adnl_address record maps the domain to the ADNL address of the reverse proxy. Resolution details are in the TON DNS reference.

Open the .ton domain in a browser configured with a TON Proxy forward proxy. The site content served by the local web server should be visible.

  • DNS propagation delay: the dns_adnl_address record is stored on-chain. After the transaction confirms, allow up to 60 seconds for DHT nodes to propagate the record before testing with a browser.
  • Wrong ADNL address: if the site does not load, verify the ADNL address in the DNS record matches the address logged by the reverse proxy at startup. Correct it by submitting a new DNS transaction with the right value.
  • Wallet signing failure: confirm the wallet holds enough TON for gas (typically less than 0.1 TON). If the wallet does not display a DNS record editing UI, switch to a wallet that supports TON DNS management, such as Tonkeeper or the TON web wallet.

A bag containing HTML and static assets can also be served as a TON Site by combining TON Storage and a dns_storage_address DNS record. The storage gateway resolves .bag hostnames to bag content.