代码片段存储解决方案ByteStash

简介

什么是 ByteStash ?

ByteStash 是一个自托管的 web 应用程序,旨在高效地存储、组织和管理代码片段。ByteStash 支持创建、编辑和过滤代码片段,帮助用户以安全的方式跟踪自己的代码。

主要特点:

  • 创建和编辑代码片段:用户可以方便地添加新代码片段或更新现有片段,界面直观易用。
  • 按语言和内容过滤:用户可以根据编程语言或内容中的关键字快速找到所需的代码片段。
  • 安全存储 :所有代码片段安全地存储在 SQLite 数据库中,确保代码仅对用户可访问。

ByteStash 使用 ReactNode.js 作为技术栈,支持通过 Docker 进行容器化部署。

安装

在群晖上以 Docker 方式安装。

latest 版本对应的是 1.5.4

采用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

yaml 复制代码
version: '3'

services:
  bytestash:
    image: "ghcr.io/jordan-dalby/bytestash:latest"
    container_name: bytestash
    restart: always
    volumes:
      - ./data:/data/snippets
    ports:
      - "5908:5000"
    environment:
      # See https://github.com/jordan-dalby/ByteStash/wiki/FAQ#environment-variables
      BASE_PATH: ""
      JWT_SECRET: Aga2cNBCyPHe6ZdY5DMLMDV7GbTHQCZzi2owCfk5yZs2zRtCV6Lu8vLeGmQ7TjPZ
      TOKEN_EXPIRY: 24h
      ALLOW_NEW_ACCOUNTS: "true"
      DEBUG: "true"
      DISABLE_ACCOUNTS: "false"
      DISABLE_INTERNAL_ACCOUNTS: "false"

      # See https://github.com/jordan-dalby/ByteStash/wiki/Single-Sign%E2%80%90on-Setup for more info
      OIDC_ENABLED: "false"
      OIDC_DISPLAY_NAME: ""
      OIDC_ISSUER_URL: ""
      OIDC_CLIENT_ID: ""
      OIDC_CLIENT_SECRET: ""
      OIDC_SCOPES: ""

官方的详细环境变量说明:https://github.com/jordan-dalby/ByteStash/wiki/FAQ#environment-variables

可变 值及说明
BASE_PATH 用于设置基础路径,例如输入 /bytestash 指向 my.domain/bytestash,在大多数情况下可以留空。
JWT_SECRET_FILE 用于 Docker 秘密管理。如果不清楚如何使用此选项,请使用 JWT_SECRET 选项。
JWT_SECRET 您的 JWT 密钥,生成自己的密钥并替换该值。
ALLOW_NEW_ACCOUNTS 设置为 truefalse,指示该 ByteStash 实例是否开放新账户注册。
DEBUG 设置为 truefalse,通常情况下保持为 false,仅在调试问题时使用。
DISABLE_ACCOUNTS 设置为 truefalse,完全禁用用户账户,任何现有账户将保留,可以随时切换回去。
DISABLE_INTERNAL_ACCOUNTS 设置为 truefalse,禁用内部账户,包括现有账户,仅允许 SSO 登录。

关于 OIDC 可以参考:https://github.com/jordan-dalby/ByteStash/wiki/Single-Sign‐on-Setup

可变 值及说明
OIDC_ENABLED 设置为 truefalse,指示是否启用单点登录(SSO)。
OIDC_DISPLAY_NAME 可选项,用于替换登录页面文本 "Sign in with XYZ",默认值为 "Single Sign-on"
OIDC_ISSUER_URL SSL 启用的链接,指向您的身份验证器,例如 https://authentik.mydomain.com/application/o/bytestash/
OIDC_CLIENT_ID 在设置 Authentik(或其他提供者)应用程序时定义的客户端 ID
OIDC_CLIENT_SECRET 在设置 Authentik(或其他提供者)应用程序时定义的客户端密钥。
OIDC_SCOPES 默认值为 openid profile email,除非需要特定配置,否则可以留空或不设置。

然后执行下面的命令

bash 复制代码
# 新建文件夹 bytestash 和 子目录
mkdir -p /volume1/docker/bytestash/data

# 进入 bytestash 目录
cd /volume1/docker/bytestash

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:5908 ,第一次需要注册账号

密码长度不能少于 8 位;

登录成功后的主界面

现在你已经有了第一个账号,如果你不希望让别人使用,现在可以将 ALLOW_NEW_ACCOUNTS 改为 false来禁止新用户注册

New Snippet 添加代码片段

随便加了几个

代码的查询方式比较丰富,可以按分类、语言等等

可能的问题

偶然遇到过代码输入框,一直显示 Loading,不能输入的情况。后来一直未能复现,怀疑可能跟数据库初始化有关

正常情况下,代码输入框是可以输入的

参考文档

jordan-dalby/ByteStash: A code snippet storage solution written in React & node.js

地址:https://github.com/jordan-dalby/ByteStash/
Self-hosted Code Snippet Manager : r/selfhosted

地址:https://www.reddit.com/r/selfhosted/comments/1gb1ail/selfhosted_code_snippet_manager/

相关推荐
魂尾ac2 小时前
Centos Docker 安装(100%成功)
linux·docker·centos
Johny_Zhao9 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
zwjapple9 小时前
docker-compose一键部署全栈项目。springboot后端,react前端
前端·spring boot·docker
代码老y11 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
DuelCode12 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
杨浦老苏17 小时前
开源服务运行监控工具Lunalytics
docker·群晖·网站监控
GuoyeZhang20 小时前
群晖 DS3617xs DSM 6.1.7 解决 PhotoStation 安装失败问题 PHP7.0
群晖·nas·photostation
呆萌的代Ma1 天前
解决Mac上的老版本docker desktop 无法启动/启动后一直转圈/无法登陆账号的问题
macos·docker·eureka
feilieren1 天前
Docker 安装 Elasticsearch 9
运维·elasticsearch·docker·es
KaiwuDB1 天前
使用Docker实现KWDB数据库的快速部署与配置
数据库·docker