Onboarding Guide π±
This document outlines the step-by-step procedure required to onboard a new user onto the NAS infrastructure, provision their personal Hermes AI Agent, and configure their Obsidian LiveSync environment.
Step 1: Accessing NAS via TailScale VPN
TailScale VPN
Access to the NAS in the local area network (LAN) requires secure connection via TailScale
- [User] Create a personal TailScale account
- [Admin] Invite the [User] to the adminβs TailNet via the Tailscale Admin Console.
- [User] Accept the invitation & install the TailScale application on your local machine.
- [User] Login to TailScale & the device will automatically register to TailNet.
Network Attached Storage (NAS)
The core of the entire system, where all the configurations & deployments occur.
- [Admin] Add [User] under User Management
- Setup username & password
- [Admin] Setup the following directories
/home/<Username>/vaultfor Obsidian vault/hermes/.hermes.usernamefor user-specific Hermes AI configuration- Decision:
- [User] Login & access via NAS Desktop or TailNet host name
[Note] I decided to prioritise Bind Mounts over Named Volumes β
volumes: test_vault:- Named Volumes are Docker-managed, which becomes a configuration black-hole. - Bind Mounts grants administrators direct visibility and greater control over configuration management on the NAS.
Step 2: Setup Hermes Agent with Telegram
Hermes Agent
Each userβs Hermes Agent is bound to a single, dedicated Telegram Bot. This isolation requires deploying a separate Docker container for every onboarded user.
Steps:
- [Admin] Update
docker-compose.yamlto add a new service container for the new user. - [User] Message
@BotFatheron Telegram to generate a new bot, then retrieve yourTELEGRAM_BOT_TOKENand personalTELEGRAM_USER_ID. - [User] (Optional) Set up an OpenRouter account and retrieve an API key to configure custom LLM models.
- [Admin] Add these values to
/hermes/.env - [Admin] Redeploy the stack
Networking Configuration
Since weβre using Caddy reverse proxy, weβll need to expose the web interface to allow the user to access & configure Hermes Agent Dashboard
Steps:
- [Admin] Allocate a unique, open host port for the new userβs Hermes Dashboard.
- [Admin] Append a routing block in
Caddyfileto securely proxy incoming traffic from the TailNet URL to the userβs designated backend port.
Step 3: Setup Obsidian Vault with LiveSync
Obsidian Vault
Vault stored locally on your device where all your notes, attachments, settings are stored. Effectively a brain that you can see, modify and extend with new thoughts and ideas.
- [User] Install Obsidian application to your device.
- [User] Create a new vault or mount it onto an existing directory.
- [User] In the Settings, enable
Community Plugins.
(NAS) Obsidian LiveSync
Instead of re-inventing the wheel, this community plugins coordinates the real-time live syncing feature of Obsidian Vault using CouchDB & PouchDB (JavaScript version) across all devices.
- See Obsidian Livesync β README.md for documentation
- [Admin] From CouchDB UI, add a new database for the user β
DATABASE_NAME - [User] Install
Obsidian LiveSyncunderCommunity Plugins - [User] Under
Settings β Obsidian LiveSync,- Under
Remote Configuration, fill in the following:- TailNet URL:
<tailnet.ts.net>:8444 Username,Password,DATABASE_NAME- Test connection should be successful
- TailNet URL:
- Under
Remote Configuration,- Setup
End-to-End EncryptionwithPassphrase - Will start replicating chunks from local vault to the remote vault via CouchDB
- Setup
- Under
Sync Settings,- Enable
Sync Mode: LiveSyncfor real-time synchronisation between local & remote vaults - Otherwise, you may choose other sync modes as well
- Enable
- Under
(NAS) Obsidian LiveSync CLI
Similar to how other devices require an Obsidian Client for syncing the local vault with the remote vault, this Headless CLI setup ensures that changes made within the NAS (i.e. by Hermes Agent) can be synced with all other devices.
- See Obsidian Livesync CLI β README.md for documentation
- [Admin] Ensure that
obsidian-livesync-cliis properly configured- Add
.livesync/settings.jsonwith required configurations - Setup network bridge between
couchdb&obsidian-livesync - Directly use
couchDB_URI = http://couchdb:5984for connection
- Add
- [Admin] Ensure that the remote DB is unlocked :LiUnlockKeyhole:
- Remote DB might be locked, will need to overwrite remote server data β
- This allows the
obsidian-livesync-clito write changes to the remotecouchDB
- [Admin] Plugin will run the following commands:
livesync-cli mirror: Local CouchDBlivesync-cli sync: Local CouchDBlivesync-cli mirror: Local CouchDB
(Optional) Setup Hermes MCP server Integration
iujinwee-vault-plugin MCP Server
This MCP server was built & customised for my personal vault management workflow.
- [Admin] Build the Go binary for UGREEN NAS compatible OS using the following command:
env GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o vault-plugin ./cmd/server- [Admin] Upload the binary file to NAS
- [Admin] Update the permission of the binary file using the following command:
sudo chmod -R 777 /volume1/docker/hermes/vault-plugin- [Admin] Configure Hermes MCP configuration via the Dashboard
- You should see the tools made available by
iujinwee-vault-plugin!