1 Core Obsidian Shortcuts#
These are the most essential keys for building your homelab documentation rapidly.
| Action | Shortcut (Mac) | Result |
|---|---|---|
| Quick Open | Cmd + O |
Search for any note in your vault. |
| Insert Link | Cmd + K |
Creates standard []( ) syntax. |
| Toggle Sidebar | Cmd + S |
Hides/Shows the file explorer. |
| Search in Note | Cmd + F |
Finds text within the current file. |
| Global Search | Cmd + Shift + F |
Searches your entire vault. |
| Command Palette | Cmd + P |
Access every feature (Templates, Plugins, etc). |
2 Linking to Headings with Wikilinks Disabled#
Since we switched to Standard Markdown Links, use these to keep the “network” alive.
- Internal Autocomplete: Type
[[even though Wikilinks are off. Select the note and hitEnterto get a Hugo-friendly link:[Note](<Note.md>). - Rapid External Link: Highlight a word and press
Cmd + V(Paste) with a URL in your clipboard. It will wrap the word in a link automatically.
When Use [[Wikilinks]] is toggled OFF in Obsidian settings, you must use the [Label](Path.md#Heading) format. To avoid manually typing URL-encoded spaces (like %20), use the “Search & Convert” method.
2.1 The “Search & Convert” Method#
This method uses the [[ trigger as a temporary search tool. Obsidian will automatically convert your selection into a properly formatted Markdown link.
| Step | Action | Keyboard Input |
|---|---|---|
| 1 | Trigger Search | Type [[ |
| 2 | Find Note | Type the name of the note - DON’T PRESS ENTER |
| 3 | Search Headings | Type # immediately after the note name |
| 4 | Select Heading | Use arrow keys to select the heading and press Enter |
| 5 | Result | Obsidian converts it to [Note > Heading](Note%20Name.md#Heading) |
2.2 Customizing the Link Text#
After Obsidian generates the long link, you can safely change the text inside the brackets [ ] to whatever you want (e.g., “See HP”) without breaking the link.
Generated Link:
[HP Server Performance settings > Performance vs. Power Savings Comparison](HP%20Server%20Performance%20settings.md#Performance%20vs.%20Power%20Savings%20Comparison)
Your Edited Version:
[See HP](HP%20Server%20Performance%20settings.md#Performance%20vs.%20Power%20Savings%20Comparison)
2.3 Critical Requirements#
- Extension: The
.mdmust remain inside the parentheses( ). - Encoded Spaces: Spaces in the file path must be
%20. The method above handles this automatically. - Settings: Verify Settings > Files & Links > Use [[Wikilinks]] is OFF to ensure the conversion happens upon pressing Enter.
- Path Logic: If the file is in a folder, the path might look like
Folder/File%20Name.md. Using the[[trigger handles the pathing for you based on your “Default link format” setting.
3 Hugo Terminal Commands#
Run these in your terminal while inside /Users/marc/Obsidian/Homelab/.
- Start Dev Server:
hugo server -D(The-Dincludes drafts). - Create New Post:
hugo new posts/my-new-note.md. - Build Site:
hugo --gc --minify(Cleans up old files and shrinks the output).
5 Clone Vault settings to a new one#
# 1. Define paths
SOURCE="/Users/$(whoami)/Obsidian/Homelab"
TARGET="/Users/$(whoami)/Obsidian/NewVault"
# 2. Sync Core UI & Behavior
rsync -av "$SOURCE/.obsidian/app.json" "$TARGET/.obsidian/app.json"
rsync -av "$SOURCE/.obsidian/hotkeys.json" "$TARGET/.obsidian/hotkeys.json"
rsync -av "$SOURCE/.obsidian/appearance.json" "$TARGET/.obsidian/appearance.json"
rsync -av "$SOURCE/.obsidian/core-plugins.json" "$TARGET/.obsidian/core-plugins.json"
# 3. Sync Workflow Logic (Daily Notes, Templates, Pinned Commands)
rsync -av "$SOURCE/.obsidian/daily-notes.json" "$TARGET/.obsidian/daily-notes.json" 2>/dev/null
rsync -av "$SOURCE/.obsidian/templates.json" "$TARGET/.obsidian/templates.json" 2>/dev/null
rsync -av "$SOURCE/.obsidian/command-palette.json" "$TARGET/.obsidian/command-palette.json" 2>/dev/null
# 4. Sync Visuals (Themes & Snippets)
mkdir -p "$TARGET/.obsidian/themes" "$TARGET/.obsidian/snippets"
rsync -av "$SOURCE/.obsidian/themes/." "$TARGET/.obsidian/themes/"
rsync -av "$SOURCE/.obsidian/snippets/." "$TARGET/.obsidian/snippets/"- If some settings are not present, errors might be shown, but it’s OK
6 Clone all plugins to a new vault while preserving the one present#
Warning: The Self-Hosted LiveSync plugin will try to overwrite the vault when you activate it. The DB should be turned off during the fist start so you can modify it safely.
# 1. Define your paths
SOURCE="/Users/$(whoami)/Obsidian/Homelab"
TARGET="/Users/$(whoami)/Obsidian/NewVault"
# 2. Create the target plugins directory
mkdir -p "$TARGET/.obsidian/plugins"
# 3. Sync ALL plugin folders (The 'engine' and 'settings' for every plugin)
# We use -av to ensure we copy all subfolders (like obsidian-git, dataview, etc.)
rsync -av "$SOURCE/.obsidian/plugins/." "$TARGET/.obsidian/plugins/"
# 4. Sync the Copilot prompts folder (just in case they are needed)
if [ -d "$SOURCE/copilot" ]; then
mkdir -p "$TARGET/copilot"
rsync -av "$SOURCE/copilot/." "$TARGET/copilot/"
fi
# 5. Surgical Merge of the "Enabled" list
# This takes the list of plugins from SOURCE and adds them to TARGET
# without creating duplicates or deleting existing plugins in TARGET.
if [ ! -f "$TARGET/.obsidian/community-plugins.json" ]; then
cp "$SOURCE/.obsidian/community-plugins.json" "$TARGET/.obsidian/community-plugins.json"
else
tmp=$(mktemp)
jq -s 'add | unique' "$SOURCE/.obsidian/community-plugins.json" "$TARGET/.obsidian/community-plugins.json" > "$tmp" && mv "$tmp" "$TARGET/.obsidian/community-plugins.json"
fi
# 6. Final Verification
cat "$TARGET/.obsidian/community-plugins.json"7 Clone the Copilot AI plugin to a new vault#
# 1. Define your paths
SOURCE="/Users/$(whoami)/Obsidian/Homelab"
TARGET="/Users/$(whoami)/Obsidian/NewVault"
# 2. Create the internal directory structure (Crucial for a new vault)
mkdir -p "$TARGET/.obsidian/plugins/copilot"
mkdir -p "$TARGET/copilot/copilot-custom-prompts"
# 3. Sync the Copilot engine and your Gemini settings
# This moves the .js code and your API keys/model selection
rsync -av "$SOURCE/.obsidian/plugins/copilot/" "$TARGET/.obsidian/plugins/copilot/"
# 4. Sync your Custom Prompts
# This moves your Senior SysAdmin personas and Hugo logic
rsync -av "$SOURCE/copilot/copilot-custom-prompts/" "$TARGET/copilot/copilot-custom-prompts/"
# 5. Initialize the "Guest List" and add Copilot
# This creates the file if it's missing and adds the plugin name
if [ ! -f "$TARGET/.obsidian/community-plugins.json" ]; then
echo '["copilot"]' > "$TARGET/.obsidian/community-plugins.json"
else
tmp=$(mktemp)
jq '. + ["copilot"] | unique' "$TARGET/.obsidian/community-plugins.json" > "$tmp" && mv "$tmp" "$TARGET/.obsidian/community-plugins.json"
fi
# 6. Final Verification
cat "$TARGET/.obsidian/community-plugins.json"- Reload Plugins (or activate the community plugins): Go to Settings > Community Plugins and toggle Copilot OFF and ON.
- You might need to clean logs in the /Users/marc/Obsidian/NewVault/copilot
- Verify Model: Check that gemini-3-flash-preview is selected.
- Wipe the Ghost Index: Since the index is unique to the file content, run:
- Cmd + P -> Copilot: Force Re-index Vault
8 Clone the Number Headings plugin to a new vault#
# 1. Define your paths
SOURCE="/Users/$(whoami)/Obsidian/Homelab"
TARGET="/Users/$(whoami)/Obsidian/NewVault"
# 2. Create the target folder (Folder name: number-headings-obsidian)
mkdir -p "$TARGET/.obsidian/plugins/number-headings-obsidian"
# 3. Sync the Number Headings engine and settings
# This ensures your specific heading formats move over
rsync -av "$SOURCE/.obsidian/plugins/number-headings-obsidian/" "$TARGET/.obsidian/plugins/number-headings-obsidian/"
# 4. Surgical Enable (Adds to list, ignores if already there)
if [ ! -f "$TARGET/.obsidian/community-plugins.json" ]; then
echo '["number-headings-obsidian"]' > "$TARGET/.obsidian/community-plugins.json"
else
tmp=$(mktemp)
jq '. + ["number-headings-obsidian"] | unique' "$TARGET/.obsidian/community-plugins.json" > "$tmp" && mv "$tmp" "$TARGET/.obsidian/community-plugins.json"
fi
# 5. Final Verification
cat "$TARGET/.obsidian/community-plugins.json"9 Copy vault and settings from MacStudio to another computer#
Copy the setting (.obisdian folder)
Warning: Obsidian should not be running on source and destination
# MacStudio to MacBook Air
rsync -avzhI --delete --progress /Users/marc/Obsidian/Homelab/.obsidian/ marc@10.1.2.5:/Users/marc/Obsidian/Homelab/.obsidianCopy the full vault
Warning: Obsidian should not be running on source and destination - You will overwrite the full vault! This should not be used unless you want to create the vault to a new machine
# Homelab - MacStudio to MacBook Air
rsync -avzh --progress /Users/marc/Obsidian/Homelab/ marc@10.1.2.5:/Users/marc/Obsidian/Homelab/# Homelab - MacStudio to MacBook Pro 15
rsync -avzh --progress /Users/marc/Obsidian/Homelab/ marc@10.1.2.31:/Users/marc/Obsidian/Homelab/# Homelab - MacStudio to MacBook Pro 16
rsync -avzh --progress /Users/marc/Obsidian/Homelab/ marc@10.1.9.116:/Users/marc/Obsidian/Homelab/# Peru - MacStudio to MacBook Air
rsync -avzh --progress /Users/marc/Obsidian/Peru/ marc@10.1.2.5:/Users/marc/Obsidian/Peru/10 Fix Git pull error on target computer#
git fetch origin && git reset --hard origin/main