Here's a quick example on how to use sodium_crypto_aead_chacha20poly1305_ietf_encrypt(); where you have 1 key to encrypt and decrypt.
<?php
$key = sodium_crypto_aead_chacha20poly1305_ietf_keygen();
//--------------------------------------------------
// Encrypting
$message = 'hello';
$nonce = random_bytes(SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES);
$encrypted = sodium_crypto_aead_chacha20poly1305_ietf_encrypt($message, $nonce, $nonce, $key);
echo base64_encode($encrypted) . "\n";
//--------------------------------------------------
// Decrypting
$decrypted = sodium_crypto_aead_chacha20poly1305_ietf_decrypt($encrypted, $nonce, $nonce, $key);
echo $decrypted . "\n";
?>
And just to confirm, the $nonce is used twice - the first time it's in the authentication tag ($ad):
https://twitter.com/craigfrancis/status/949614546259513344