Skip to content

Latest commit

 

History

History
94 lines (71 loc) · 3.91 KB

File metadata and controls

94 lines (71 loc) · 3.91 KB

Snipo

A lightweight, self-hosted snippet manager designed for single-user deployments.

Note: This project is intentionally scoped for single-user use. Multi-user features are not planned.

CI CI Release Go Version License: AGPL v3 GitHub release

Snipo Demo

Features

  • Fast & Lightweight: Built with Go and pure SQLite.
  • Powerful Search: Fuzzy search across titles, descriptions, and file content.
  • Organization: Organize snippets with folders and tags.
  • Public Sharing: Share snippets publicly with granular file-level access.
  • Version History: Automatic tracking of all changes with restore capabilities.
  • Trash & Recovery: Soft delete mechanism with restore capabilities.
  • GitHub Gist Sync: Two-way synchronization with GitHub Gists for backup.
  • Developer Friendly: RESTful API with tokens and granular permissions.
  • Docker Ready: Easy deployment with Docker and standard or hardened images.
  • Customizable: Extensive theming support via custom CSS.
  • RTL Support: Support for RTL languages with intelligent mixed-content handling.

Client Integrations

The Snipo RESTful API enables extensive client integration. As an example, the repository includes a ready-to-use Terminal User Interface (TUI) client:

  • Snippy: A rich TUI client showcasing a seamless, keyboard-driven integration with a running Snipo server.

Quick Start

Docker (Recommended)

# Create environment file
cat > .env << EOF
SNIPO_MASTER_PASSWORD=your-secure-password
SNIPO_SESSION_SECRET=$(openssl rand -hex 32)
SNIPO_ENCRYPTION_SALT=$(openssl rand -base64 32)
EOF

# Run with Docker Compose
docker compose up -d

Or using Docker directly:

docker run -d \
  -p 8080:8080 \
  -v snipo-data:/data \
  -e SNIPO_MASTER_PASSWORD=your-secure-password \
  -e SNIPO_SESSION_SECRET=$(openssl rand -hex 32) \
  -e SNIPO_ENCRYPTION_SALT=$(openssl rand -base64 32) \
  --name snipo \
  ghcr.io/mohamedelashri/snipo:latest

Access at http://localhost:8080

Binary

# Download latest release
curl -LO https://github.com/MohamedElashri/snipo/releases/latest/download/snipo_linux_amd64.tar.gz
tar xzf snipo_linux_amd64.tar.gz

# Configure and run
export SNIPO_MASTER_PASSWORD="your-secure-password"
export SNIPO_SESSION_SECRET=$(openssl rand -hex 32)
export SNIPO_ENCRYPTION_SALT=$(openssl rand -base64 32)
./snipo serve

Documentation

  • Deployment & Configuration: Installation, environment variables, reverse proxy setup, and database/API configuration.
  • Features Guide: In-depth guide to Search, Public Snippets, Gist Sync, API, and Arabic/RTL support.
  • Security: Security model, authentication modes, and best practices.
  • Customization: Theming, custom CSS, and RTL customization guide.
  • Development: Build instructions and contribution guidelines.
  • API Spec: OpenAPI specification.

License

This project is licensed under the AGPLv3. Use at your own risk.