fix: add login.sh helper and graceful not-logged-in handling in entrypoint

This commit is contained in:
hermes
2026-04-23 14:32:50 +00:00
parent b8ac794479
commit 8de1a164e1
3 changed files with 75 additions and 36 deletions
+31 -21
View File
@@ -10,36 +10,46 @@ A headless Docker container that uses `obsidian-headless` to keep a local vault
cd obsidian-sync-server
```
2. **Configure the Host Path:**
- Copy the example env: `cp .env.example .env`
- Open `.env` and set `VAULT_HOST_PATH` to the **absolute path** of the folder on your computer where you want the notes to live.
- *Correct:* `/home/user/documents/my-vault`
- *Incorrect:* `./vault` (relative paths can be unpredictable in docker-compose)
2. **Configure the environment:**
```bash
cp .env.example .env
```
Open `.env` and fill in:
- `VAULT_HOST_PATH` — **Absolute path** on your host where notes will be stored (e.g. `/home/user/my-vault`)
- `OBSIDIAN_VAULT_NAME` — Name of your remote Obsidian Sync vault
- `OBSIDIAN_SYNC_PASSWORD` — Your end-to-end encryption password
- `OBSIDIAN_DEVICE_NAME` — How this device appears in your Sync history
3. **Set Sync Credentials:**
- Fill in `OBSIDIAN_VAULT_NAME` and `OBSIDIAN_SYNC_PASSWORD` (your E2EE key).
3. **Log in (one-time setup):**
```bash
./login.sh
```
This spins up a temporary container just for authentication. Your session is saved to the `./config` folder and will be reused by the main container automatically. You only need to do this once.
4. **Launch:**
4. **Start the sync server:**
```bash
docker-compose up -d
```
5. **First-Time Login:**
Because Obsidian Sync requires a secure login, you must authenticate the container once:
```bash
docker exec -it obsidian-sync-server ob login
```
Follow the instructions to log in. The session will be saved in the `./config` folder, so you won't have to do this again.
The container will now run continuously, syncing your vault in both directions.
## How it Works
The container runs a continuous sync loop.
- **Cloud $\rightarrow$ Host:** Changes in Obsidian Sync are immediately downloaded to your `VAULT_HOST_PATH`.
- **Host $\rightarrow$ Cloud:** Any changes you make to the files in `VAULT_HOST_PATH` (via a local Obsidian app or text editor) are immediately pushed to the cloud.
The container runs `ob sync --continuous` which:
- **Cloud → Host:** Pulls changes from Obsidian Sync down to your `VAULT_HOST_PATH`
- **Host → Cloud:** Pushes any local file changes back up to the cloud
If the container starts and is not logged in, it will print instructions and sleep (instead of crash-looping) so you can run `./login.sh`.
## Environment Variables
| Variable | Description |
|----------|-------------|
| `OBSIDIAN_VAULT_NAME` | The name of the remote vault you want to sync |
| `VAULT_HOST_PATH` | **Absolute path** to the vault folder on your host machine (e.g. `/home/user/my-vault`) |
| `OBSIDIAN_VAULT_NAME` | The name of the remote vault to sync |
| `OBSIDIAN_SYNC_PASSWORD` | Your end-to-end encryption password |
| `OBSIDIAN_DEVICE_NAME` | The name this device will have in your Sync history |
| `VAULT_HOST_PATH` | **Absolute path** to the vault folder on your host machine |
| `OBSIDIAN_DEVICE_NAME` | Device name shown in Sync version history |
## Requirements
- Docker & Docker Compose
- An active [Obsidian Sync](https://obsidian.md/sync) subscription