docker.recipes

Shiori Simple Bookmark Manager

beginner

Simple bookmark manager with archive functionality, written in Go.

Overview

Shiori is a lightweight, self-hosted bookmark manager written in Go that allows users to save, organize, and archive web pages locally. Originally inspired by Pocket but designed for self-hosting enthusiasts, Shiori automatically creates offline copies of bookmarked pages, making your saved content accessible even when the original websites are down. The application features a clean web interface, full-text search capabilities, and the ability to organize bookmarks with tags and folders. This Docker stack combines Shiori with nginx to provide a production-ready deployment with proper reverse proxy handling, SSL termination capabilities, and improved performance through static file caching. The nginx layer adds professional-grade features like rate limiting, compression, and security headers that make Shiori suitable for team usage or public-facing deployments. This combination is particularly valuable for organizations wanting to provide their teams with a centralized, private bookmark management solution that doesn't rely on external services like Google Bookmarks or Pocket, ensuring complete data ownership and privacy.

Key Features

  • Automatic webpage archiving with full content preservation including images and CSS
  • Full-text search across bookmark titles, content, and tags with instant results
  • RESTful API for programmatic bookmark management and bulk operations
  • Browser extension support for Chrome and Firefox with one-click bookmarking
  • Command-line interface for batch importing bookmarks from other services
  • Tag-based organization system with hierarchical folder structure support
  • nginx-powered static file caching for faster bookmark thumbnail and archive loading
  • Built-in duplicate detection to prevent saving the same URL multiple times

Common Use Cases

  • 1Development teams maintaining shared technical documentation and reference links
  • 2Research organizations archiving web resources for long-term academic projects
  • 3Content creators building private libraries of inspiration and reference materials
  • 4Small businesses creating centralized knowledge bases from web resources
  • 5Privacy-conscious individuals replacing cloud bookmark services with self-hosted alternatives
  • 6Educational institutions providing students with curated, archived web resources
  • 7Remote teams collaborating on project research with shared bookmark collections

Prerequisites

  • Minimum 512MB RAM for Shiori application and bookmark indexing operations
  • Available ports 80 and 443 for nginx web server and SSL termination
  • Port 8080 free for direct Shiori access during initial setup and configuration
  • Basic understanding of nginx configuration for SSL certificate setup and domain routing
  • Docker Compose version 3.8+ for proper volume mounting and networking features

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 shiori:
3 image: ghcr.io/go-shiori/shiori:latest
4 ports:
5 - "8080:8080"
6 volumes:
7 - shiori_data:/shiori
8 environment:
9 SHIORI_DIR: /shiori
10 networks:
11 - shiori-net
12 restart: unless-stopped
13
14 nginx:
15 image: nginx:alpine
16 ports:
17 - "80:80"
18 - "443:443"
19 volumes:
20 - ./nginx.conf:/etc/nginx/nginx.conf:ro
21 depends_on:
22 - shiori
23 networks:
24 - shiori-net
25 restart: unless-stopped
26
27volumes:
28 shiori_data:
29
30networks:
31 shiori-net:
32 driver: bridge

.env Template

.env
1# Shiori Configuration
2# Default login: shiori / gopher

Usage Notes

  1. 1Web UI at http://localhost:8080
  2. 2Default login: shiori / gopher
  3. 3Lightweight and fast
  4. 4CLI and browser extensions available

Individual Services(2 services)

Copy individual services to mix and match with your existing compose files.

shiori
shiori:
  image: ghcr.io/go-shiori/shiori:latest
  ports:
    - "8080:8080"
  volumes:
    - shiori_data:/shiori
  environment:
    SHIORI_DIR: /shiori
  networks:
    - shiori-net
  restart: unless-stopped
nginx
nginx:
  image: nginx:alpine
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - ./nginx.conf:/etc/nginx/nginx.conf:ro
  depends_on:
    - shiori
  networks:
    - shiori-net
  restart: unless-stopped

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 shiori:
5 image: ghcr.io/go-shiori/shiori:latest
6 ports:
7 - "8080:8080"
8 volumes:
9 - shiori_data:/shiori
10 environment:
11 SHIORI_DIR: /shiori
12 networks:
13 - shiori-net
14 restart: unless-stopped
15
16 nginx:
17 image: nginx:alpine
18 ports:
19 - "80:80"
20 - "443:443"
21 volumes:
22 - ./nginx.conf:/etc/nginx/nginx.conf:ro
23 depends_on:
24 - shiori
25 networks:
26 - shiori-net
27 restart: unless-stopped
28
29volumes:
30 shiori_data:
31
32networks:
33 shiori-net:
34 driver: bridge
35EOF
36
37# 2. Create the .env file
38cat > .env << 'EOF'
39# Shiori Configuration
40# Default login: shiori / gopher
41EOF
42
43# 3. Start the services
44docker compose up -d
45
46# 4. View logs
47docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/shiori-bookmark-manager/run | bash

Troubleshooting

  • Shiori login fails with default credentials: Check if initialization completed by examining shiori container logs with 'docker-compose logs shiori'
  • Bookmark archiving fails or times out: Increase Docker memory allocation to at least 1GB as webpage archiving is memory-intensive
  • nginx returns 502 Bad Gateway: Verify shiori container is running and accessible on port 8080 within the shiori-net network
  • Bookmarks lose archived content after restart: Ensure shiori_data volume is properly mounted and has sufficient disk space for archives
  • Browser extension cannot connect to server: Configure nginx.conf to properly proxy API endpoints and WebSocket connections to Shiori backend
  • Search functionality returns incomplete results: Rebuild Shiori's search index using the CLI command 'shiori update' within the container

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space