
【Docker项目实战】使用Docker部署自托管ByteStash代码片段管理工具一、ByteStash介绍1.1 ByteStash简介1.2 ByteStash特点二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、拉取ByteStash镜像五、部署ByteStash服务5.1 创建部署目录5.2 编辑部署文件5.3 创建ByteStash容器5.4 查看ByteStash容器状态5.5 检查ByteStash容器日志六、访问ByteStash服务6.1访问ByteStash初始页6.2 注册账号6.3 添加代码段七、总结一、ByteStash介绍1.1 ByteStash简介ByteStash 是一款可自托管的代码片段管理工具帮助开发者安全、高效地存储、组织和管理常用代码。1.2 ByteStash特点支持创建和编辑代码片段操作简单直观。可按编程语言或内容关键词快速过滤和查找片段。所有代码片段均安全存储于本地 SQLite 数据库保障数据隐私与安全。二、本次实践规划2.1 本地环境规划本次实践为个人测试环境操作系统版本为 Ubuntu 24.04.2 LTS。hostnameIP地址操作系统版本Docker版本部署项目备注jeven192.168.3.88Ubuntu 24.04.2 LTS28.5.0ByteStash——2.2 本次实践介绍1.本次实践部署环境为个人测试环境生产环境请谨慎2.在Docker环境下部署ByteStash代码片段管理工具。三、本地环境检查3.1 检查Docker服务状态检查Docker服务是否正常运行确保Docker正常运行。rootjeven:~# systemctl status docker● docker.service - Docker Application Container Engine Loaded: loaded(/usr/lib/systemd/system/docker.service;enabled;preset: enabled)Active: active(running)since Sat2025-10-0413:29:05 UTC;2days ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID:888(dockerd)Tasks:65Memory:1.2G(peak:1.4G)CPU: 3min23.296s CGroup: /system.slice/docker.service3.2 检查Docker版本检查Docker版本rootjeven:~# docker -vDocker version28.5.0, build 887030f3.3 检查docker compose 版本检查Docker compose版本确保2.0以上版本。rootjeven:~# docker compose versionDocker Compose version v2.39.4四、拉取ByteStash镜像下载ByteStash镜像镜像名称ghcr.io/jordan-dalby/bytestash:latestdockerpull ghcr.io/jordan-dalby/bytestash:latest五、部署ByteStash服务5.1 创建部署目录创建部署目录mkdir-p/data/bytestash/datacd/data/bytestash目录授权工作chmod-R777/data/bytestash5.2 编辑部署文件在部署目录下创建docker-compose.yaml文件内容如下所示vimdocker-compose.yamlservices:bytestash:image:ghcr.io/jordan-dalby/bytestash:latestrestart:alwaysvolumes:-/data/bytestash/data:/data/snippetsports:-5000:5000environment:# See https://github.com/jordan-dalby/ByteStash/wiki/FAQ#environment-variables#ALLOWED_HOSTS: localhost,my.domain.com,my.domain.netBASE_PATH:JWT_SECRET:your-secretTOKEN_EXPIRY:24hALLOW_NEW_ACCOUNTS:trueDEBUG:trueDISABLE_ACCOUNTS:falseDISABLE_INTERNAL_ACCOUNTS:false# See https://github.com/jordan-dalby/ByteStash/wiki/Single-Sign%E2%80%90on-Setup for more infoOIDC_ENABLED:falseOIDC_DISPLAY_NAME:OIDC_ISSUER_URL:OIDC_CLIENT_ID:OIDC_CLIENT_SECRET:OIDC_SCOPES:️ ByteStash 环境变量配置Environment Variables环境变量值类型/示例说明BASE_PATH字符串如/bytestash设置应用的基础路径用于反向代理子路径。若直接使用根路径可留空。JWT_SECRET字符串自定义密钥用于签名 JWT 令牌的密钥必须替换为强随机字符串确保安全性。JWT_SECRET_FILE文件路径可选用于 Docker Secrets 管理 JWT 密钥。若不熟悉此功能建议使用 JWT_SECRET。TOKEN_EXPIRY时间如24h、7d设置 JWT 令牌的有效期默认通常为 24h。ALLOW_NEW_ACCOUNTStrue/false是否允许新用户注册。设为 false 可关闭注册功能。DEBUGtrue/false是否启用调试模式。生产环境建议设为 false。DISABLE_ACCOUNTStrue/false是否禁用所有用户账户系统保留数据且可随时恢复。DISABLE_INTERNAL_ACCOUNTStrue/false是否禁用内部账户登录包括现有账户仅允许 SSO 登录。 OIDC 单点登录SSO配置环境变量值类型/示例说明OIDC_ENABLEDtrue/false是否启用 OIDC 单点登录功能。OIDC_DISPLAY_NAME字符串如Company SSO登录按钮上显示的名称默认为 Single Sign-on。OIDC_ISSUER_URLURL如https://authentik.company.com/application/o/bytestash/OIDC 身份提供者的发行者 URL必须启用 HTTPS。OIDC_CLIENT_ID字符串在身份提供者如 Authentik、Keycloak中注册应用时生成的客户端 ID。OIDC_CLIENT_SECRET字符串在身份提供者中生成的客户端密钥用于 OIDC 认证。OIDC_SCOPES字符串如openid profile email请求的 OIDC 范围多个用空格分隔。默认值通常足够使用。5.3 创建ByteStash容器执行以下命令创建ByteStash容器。dockercompose up-d5.4 查看ByteStash容器状态检查ByteStash容器运行状态确保ByteStash容器正常启动。rootjeven:/data/bytestash# docker compose psNAME IMAGE COMMAND SERVICE CREATED STATUS PORTS bytestash-bytestash-1 ghcr.io/jordan-dalby/bytestash:latestdocker-entrypoint.s…bytestash27seconds ago Up26seconds0.0.0.0:5000-5000/tcp,[::]:5000-5000/tcp5.5 检查ByteStash容器日志检查容器运行日志确保ByteStash服务正常运行。dockercompose logs六、访问ByteStash服务6.1访问ByteStash初始页浏览器地址http://个人的服务器IP:5000访问ByteStash初始页。如果无法访问请确保宿主机的防火墙已关闭或已放行相关端口对于云服务器还需配置相应的安全组规则。6.2 注册账号自行填写登录账号信息如下所示6.3 添加代码段点击“New Snippet” 添加代码片段编辑代码段名称等信息确定添加即可。七、总结通过本次实践我们成功使用Docker部署了自托管的ByteStash代码片段管理工具整个过程简单高效便于后续维护和升级。ByteStash提供了简洁直观的界面和强大的代码管理功能极大提升了开发者的代码复用效率。结合Docker的容器化优势实现了服务的快速部署与隔离保障了运行环境的稳定性。