# Shiori with Tailscale Integration A self-hosted bookmark manager (Go, single binary) running on your tailnet, fronted by a Tailscale sidecar. ## Quick Start (Tailscale) 1. Copy the example environment file and fill in your values: ```bash cp .env.example .env ``` 2. Edit `.env` and set: - `TS_AUTHKEY` — your Tailscale auth key 3. Start the stack: ```bash docker compose up -d ``` 4. Browse to `https://shiori..ts.net` and log in with the default credentials: - Username: `shiori` - Password: `gopher` 5. Change the password immediately (Settings → Account). **Note:** Shiori v1.7.0 has a known issue where the SPA's "setup wizard" detection panics with HTTP 500 on the first request when no session exists. The wizard does NOT appear on first visit. Just log in with the default credentials above and change the password. ## Headscale If you're using Headscale instead of Tailscale: 1. Copy the example environment file: ```bash cp .env.example .env ``` 2. Edit `.env` and set: - `TS_AUTHKEY` — your Headscale auth key - `TS_LOGIN_SERVER` — your Headscale server URL 3. Switch to the Headscale serve config: ```bash cp tailscale/config/serve.headscale.json tailscale/config/serve.json ``` 4. Edit `serve.json` and replace `shiori.damconsulting.net` with your actual domain. 5. Start the stack: ```bash docker compose up -d ``` 6. Browse to `http://shiori.yourdomain.com` and complete the setup wizard. ## Configuration See `.env.example` for all available options. The app accepts no env vars beyond what the sidecar requires — Shiori uses SQLite by default and stores its data in `SHIORI_DIR=/srv/shiori` (a named volume). ### Switching Serve Configs | Environment | File to use | Notes | |-------------------|--------------------------------------|-------| | Tailscale (default) | `tailscale/config/serve.json` | Supports HTTP + HTTPS with certs | | Headscale | `tailscale/config/serve.headscale.json` | HTTP only | After changing the serve config, restart the sidecar **and** the app: ```bash docker compose restart shiori-ts docker compose restart shiori ``` ## Optional: Direct Host Access Uncomment the `ports` section in `docker-compose.yml` if you need direct access without Tailscale: ```yaml ports: - "8080:8080" ``` ## Data Backup Shiori's data (SQLite database + archived bookmarks) lives in the `shiori-data` named volume. To back it up: ```bash docker run --rm -v shiori-data:/data -v /path/to/backups:/backup alpine \ tar czf /backup/shiori-$(date +%F).tar.gz -C /data . ``` ## Links - [Shiori Website](https://go-shiori.github.io/shiori/) - [Shiori GitHub](https://github.com/go-shiori/shiori) - [Shiori Container Image](https://github.com/go-shiori/shiori/pkgs/container/shiori)