There are several things that could be changed in your configuration. In order to help you, I'm providing here the following guide, based on the default Apache2's configuration.
Deal with the file system permissions
In order to access the files, the Apache's user www-data needs to have read permissions to the files and read-execute permissions to the directories, also in this number read-execute permissions to the whole path. If you do not have any special requirements, I would suggest you to use the other users permissions.
Let's assume the directory you want to index via the web server is named bar and it is located in the home directory of the user foo. By default he directories /home and /home/foo must have 755 permissions. The last bit in the octal number 755 means all other users have read-execute permissions (content rad access) to the files inside /home/foo.
So let's create our directory /home/foo/bar and let's assure it (and its path) has r-x permissions for the other users:
mkdir -p /home/foo/bar # create the directory
find /home/foo/bar -type d -exec chmod o+rx {} + # apply o+rx for the dirs recursively
sudo chmod o+rx /home /home/foo # this step is optional
Now let's create three test files and assure they have read permissions for the other users:
touch /home/foo/bar/file.{1..3} # create three empty test files
find /home/foo/bar -type f -exec chmod o+r {} + # apply o+r for the files recursively
In order to allow www-data to write content in /home/foo/bar you can change the group ownership of the directory and add rwxs group permissions (more details):
find /home/foo/bar -type d -exec chgrp www-data {} +
find /home/foo/bar -type d -exec chmod g+rwxs {} +
Test by creating another three empty files:
sudo -u www-data touch /home/foo/bar/file.{4..6}
Deal with the Apache's configuration
By default, within the main configuration file /etc/apache2/apache2.conf, for security reasons, the access to the root directory / is restricted. I would suggest you to do not override these rules via the virtual host configuration and remove <Directory /> tags (and the enclosed directives).
In particular, if you are creating an Alias to a directory outside of your DocumentRoot, you may need to explicitly permit access to the target directory (source Apache Module mod_alias).
Let's first create .htpasswd file with enough permissions (add more security by using 2FA - p.6):
htpasswd -c /home/foo/.htpasswd foo # authentication for the username 'foo'
chmod 400 /home/foo/.htpasswd # restricted the permissions
sudo chown www-data:www-data /home/foo/.htpasswd # change the ownership
According to the above, the relevant part of you virtual host configuration file should be something like this:
<VirtualHost *:80>
# Other configuration directives
Alias "/bar" "/home/foo/bar"
<Directory "/home/foo/bar">
#Require all granted
Options +Indexes +MultiViews +FollowSymLinks
IndexOptions +FancyIndexing
# Allow using of a .htaccess files
AllowOverride All
# This section could be moved in .htaccess file
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "Type some hints here..."
AuthUserFile /home/foo/.htpasswd
</IfModule>
Require valid-user
</IfModule>
</Directory>
</VirtualHost>
Enable the relevant modules and restart Apache2 to apply the new configuration:
sudo a2enmod authz_core authz_user authn_file
sudo systemctl restart apache2.service
Sample result

Update:
I'm assuming the problem belongs to file system's permissions issue. Probably the most easiest way, to solve it, is to mount the target directory inside the DocumentRoot directory by using bindfs as it is described in this answer.
Working solution:
Here's the final solution: abandon the idea of getting Alias to work correctly for my externally mounted folder and instead take @pa4080's workaround advice and usebindfs to mount the folder to /blah2 in the webroot. I was unsuccessful in getting /etc/fsab to correctly initialize my bind, so I decided to write an init script for the task.
First, install bindfs:
apt-get update
apt-get install bindfs
mkdir /var/www/example.com/blah2
Next I created a script file /var/www/scripts/blahbind.sh to be run on startup:
#!/bin/bash
bindfs -o force-user=www-data,perms=a=rX /blah1/blah2 /var/www/example.com/blah2
Then give it correct permissions:
chmod 750 /var/www/scripts/blahbind.sh
chmod +x /var/www/scripts/blahbind.sh
Next I created a service script:
vi /etc/systemd/system/blahbind.service
With the contents:
[Unit]
Requires=mydrive.mount
After=mydrive.mount
Description=bind /blah1/blah2 to example.com/blah2 folder
[Service]
ExecStart=/var/www/scripts/blahbind.sh
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Note, mydrive.mount should be replaced with the drive of the /blah1/blah2 folder. Get a list of mounts with systemctl list-units --type=mount.
Confirm that the service script works by running
sudo service blahbind start
Then enable the service to persist on reboot with:
sudo systemctl enable blahbind.service
And then, my simplified Location block, sans Alias in example.com.conf
<Location /blah2>
Options +Indexes +MultiViews +FollowSymLinks
IndexOptions +FancyIndexing
</Location>