Shiori Simple Bookmark Manager
Simple bookmark manager with archive functionality, written in Go.
[i]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
- [1]Development teams maintaining shared technical documentation and reference links
- [2]Research organizations archiving web resources for long-term academic projects
- [3]Content creators building private libraries of inspiration and reference materials
- [4]Small businesses creating centralized knowledge bases from web resources
- [5]Privacy-conscious individuals replacing cloud bookmark services with self-hosted alternatives
- [6]Educational institutions providing students with curated, archived web resources
- [7]Remote 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
[!]
WARNING: 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:latest4 ports: 5 - "8080:8080"6 volumes: 7 - shiori_data:/shiori8 environment: 9 SHIORI_DIR: /shiori10 networks: 11 - shiori-net12 restart: unless-stopped1314 nginx: 15 image: nginx:alpine16 ports: 17 - "80:80"18 - "443:443"19 volumes: 20 - ./nginx.conf:/etc/nginx/nginx.conf:ro21 depends_on: 22 - shiori23 networks: 24 - shiori-net25 restart: unless-stopped2627volumes: 28 shiori_data: 2930networks: 31 shiori-net: 32 driver: bridge[$].env Template
[.env]
1# Shiori Configuration2# Default login: shiori / gopher[i]Usage Notes
- [1]Web UI at http://localhost:8080
- [2]Default login: shiori / gopher
- [3]Lightweight and fast
- [4]CLI 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 file2cat > docker-compose.yml << 'EOF'3services:4 shiori:5 image: ghcr.io/go-shiori/shiori:latest6 ports:7 - "8080:8080"8 volumes:9 - shiori_data:/shiori10 environment:11 SHIORI_DIR: /shiori12 networks:13 - shiori-net14 restart: unless-stopped1516 nginx:17 image: nginx:alpine18 ports:19 - "80:80"20 - "443:443"21 volumes:22 - ./nginx.conf:/etc/nginx/nginx.conf:ro23 depends_on:24 - shiori25 networks:26 - shiori-net27 restart: unless-stopped2829volumes:30 shiori_data:3132networks:33 shiori-net:34 driver: bridge35EOF3637# 2. Create the .env file38cat > .env << 'EOF'39# Shiori Configuration40# Default login: shiori / gopher41EOF4243# 3. Start the services44docker compose up -d4546# 4. View logs47docker 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
## Components
shioringinx
## Tags
#shiori#bookmarks#archiving#simple#self-hosted
## Category
Productivity & CollaborationShortcuts: C CopyF FavoriteD Download