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).
This commit is contained in:
peskyadmin
2026-08-02 23:37:50 -04:00
parent e71e6f8bf5
commit 7eee40203a
5 changed files with 54 additions and 89 deletions

View File

@@ -1,8 +1,6 @@
# {{Service}} with Tailscale Integration
# Shiori with Tailscale Integration
![{{Service}} with Tailscale](https://raw.githubusercontent.com/go-vikunja/vikunja/main/frontend/src/assets/logo.svg "{{Service}}")
This project sets up a {{Service}} instance with Tailscale VPN integration using Docker Compose.
A self-hosted bookmark manager (Go, single binary) running on your tailnet, fronted by a Tailscale sidecar.
## Quick Start (Tailscale)
@@ -16,8 +14,15 @@ This project sets up a {{Service}} instance with Tailscale VPN integration using
```bash
docker compose up -d
```
4. Customize the app config per official documentation
5. Access {{Service}} at `http://{{service}}.<your-tailnet>.ts.net`
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
@@ -34,17 +39,18 @@ If you're using Headscale instead of Tailscale:
```bash
cp tailscale/config/serve.headscale.json tailscale/config/serve.json
```
4. Edit `serve.json` and replace `{{service}}.example.com` with your actual domain
4. Edit `serve.json` and replace `shiori.damconsulting.net` with your actual domain.
5. Start the stack:
```bash
docker compose up -d
```
6. Customs the app config per official documentation
7. Access {{Service}} at `http://{{service}}.yourdomain.com`
6. Browse to `http://shiori.yourdomain.com` and complete the setup wizard.
## Configuration
See `.env.example` for all available options.
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
@@ -53,18 +59,32 @@ See `.env.example` for all available options.
| 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:
After changing the serve config, restart the sidecar **and** the app:
```bash
docker compose restart {{service}}-ts
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:
Uncomment the `ports` section in `docker-compose.yml` if you need direct access without Tailscale:
```yaml
ports:
- {{port}}:{{port}}
- "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
put links to offical site, and git repo
- [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)