Q:

Is hapi-auth-bearer-token for API authentication only? 

I've been reading the docs on the bearer token module for hapi and wondering if it is suitable for only API authentication or for general purpose web application authentication as well. 
A few things are not clear from the docs. 
1) From where does the token originate?   IOW, what mechanism creates the token? 
2) By what means does the user login in the first place? 
Thanks

A:

I've been reading the docs on the bearer token module for hapi and wondering if it is suitable for only API authentication or for general purpose web application authentication as well. 

Bearer authentication is used to authorize API requests. 

1) From where does the token originate?  IOW, what mechanism creates the token? 

You need to generate and validate the tokens on your own. 
To generate, store and validate tokens, you can use uuid and bcryptjs (tokens are sent to the user and hashed tokens are saved in a database for later validation). 
The following examples are in TypeScript. 
import uuid from 'uuid';
import bcrypt from 'bcryptjs';

export interface GeneratedToken {
  token: string;
  hashedToken: string;
}

const generateToken = async function(): Promise<GeneratedToken> {
  return new Promise<GeneratedToken>((resolve, reject) => {
    let token = uuid.v4().replace(/-/g, '');
    bcrypt.genSalt(10, function(error, salt) {
      if (error) {
        reject(error);
      } else {
        bcrypt.hash(token, salt, function(error, hashedToken) {
          if (error) {
            reject(error);
          } else {
            resolve({
              token: token,
              hashedToken: hashedToken
            });
          }
        });
      }
    });
  });
};

const validateToken = function(token: string, hashedToken: string): Promise<boolean> {
  return new Promise<boolean>((resolve, reject) => {
    bcrypt.compare(token, hashedToken, function(error, result) {
      if (error) {
        reject(error);
      } else {
        resolve(result);
      }
    });
  });
};

2) By what means does the user login in the first place? 

You need to use another authentication scheme which can be as simple as storing hashed passwords in your database and comparing them with the data sent to your API route.  The same hashing scheme used for the tokens works just fine.