Files
ts-shiori/README.md
peskyadmin 7eee40203a init: ts-shiori — official ghcr.io/go-shiori/shiori:v1.7.0
Bookmark manager (Go, single binary). Single container, SQLite in a
named volume. Default admin (shiori/gopher) is auto-created on first run.

Known issue: Shiori v1.7.0's SPA wizard detection panics with HTTP 500
on the first /api/bookmarks request when no session exists. The setup
wizard does NOT appear on first visit — log in with the default
credentials above and change the password immediately.

Port 8080 inside the sidecar namespace. Optional SHIORI_HTTP_SECRET_KEY
env var would persist sessions across restarts (not enabled by default).
2026-08-02 23:37:50 -04:00

90 lines
2.8 KiB
Markdown

# 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.<your-tailnet>.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)