mirror of
https://github.com/sotashimozono/obsidian-remote-ssh.git
synced 2026-07-22 17:10:32 +00:00
Builds out the Quartz site from a 1-page placeholder into a full doc set modelled on Excalidraw plugin's user-first IA. 34 new pages across 9 sections, ~5k lines. Sections added under docs/en/: - getting-started/ install, quickstart (5-min), first-connect (lifecycle diagram) - user-guide/ ssh-config, jump-host, host-keys, conflicts, terminal-pane - configuration/ profiles, this-device, terminal, advanced (every setting documented) - server/ overview, auto-deploy (lifecycle), docker, systemd, raspberry-pi, signing - api/ overview (wire format), authentication, filesystem, watch, errors - security/ model (threat boundaries + mermaid), cosign-verify, token, host-keys - operations/ troubleshooting, logs, reconnect, daemon-panel - architecture/ index linking the existing shadow-vault / perf / collab specs - faq quick-answer landing for recurring questions en/index.md rewritten as a real landing page: "start here" matrix, section list, release-channel table, project status. Coverage notes: - Every plugin setting from settings/SettingsTab.ts has a reference entry - Every RPC method from proto/types.ts is documented with payload shapes - Every error code (-32000 series + filesystem -32010 series) is in errors.md - Cosign verify steps are copy-pasteable - Beta/stable channel model from CONTRIBUTING.md is mirrored in en/index.md Bump: 1.0.44-beta.1 → 1.0.44-beta.2.
2.4 KiB
2.4 KiB
| title | tags | |||
|---|---|---|---|---|
| Docker (turn-key sshd) |
|
Docker — turn-key sshd + auto-deploy
The repo ships a Docker setup that gives you a sandbox sshd container in one command. Useful for trying obsidian-remote-ssh without setting up SSH on a real server, hosting a shared vault for several family members or teammates, or running CI integration tests.
Quickstart
git clone https://github.com/sotashimozono/obsidian-remote-ssh
cd obsidian-remote-ssh/deploy/docker
cp ~/.ssh/id_ed25519.pub authorized_keys
cp .env.example .env
docker compose up -d --build
Connect from the plugin:
| Field | Value |
|---|---|
| Host | localhost (or your Docker host's IP) |
| Port | 2222 (configurable in .env) |
| Username | obsidian |
| Auth | Private key (your existing key) |
| Remote vault path | /home/obsidian/vault |
What is inside
- Single sshd container, port 2222 (configurable).
- Non-privileged
obsidianuser (uid 1000). - Pubkey-only auth (passwords disabled).
- Persistent host keys (
./hostkeys/on host) — survives container recreate, so trust survives upgrades. - Vault directory bind-mounted from host (
./vault/by default). - The daemon auto-deploys into
~/.obsidian-remote/on first connect.
Configuration (.env)
| Var | Default | Purpose |
|---|---|---|
HOST_PORT |
2222 |
Host-side TCP port |
VAULT_PATH |
./vault |
Host folder mounted into the container as the vault |
AUTHORIZED_KEYS_PATH |
./authorized_keys |
One pubkey per line, OpenSSH format |
HOSTKEYS_PATH |
./hostkeys |
Persistent sshd host keys |
Multiple users
Add more public keys to ./authorized_keys (one per line). Restart sshd:
docker compose restart
Each user spawns their own daemon process under the shared obsidian account; they coexist via independent socket paths configured per profile.
For real isolation (per-user vaults), run multiple containers with different mounts.
Production use
This image is reasonable for small home / family use. For real production:
- Put it behind a reverse-tunnel proxy (Tailscale, Cloudflare Tunnel) — do NOT expose port 2222 directly to the internet.
- Run the container under a non-root user namespace.
- Mount
/home/obsidian/.obsidian-remote/as a volume so daemon state survives container recreate; otherwise the token regenerates on each restart and existing plugin sessions need to reconnect.
Next: en/server/systemd.