Skip to content
Netflix - 每月低至 25 元

私有化部署 Opengist 代码片段管理工具 完美替代 Github Gist

前言

如果你经常写代码的话一定有用过 GitHub,而 GitHub 除了可以托管整个仓库以外,还有 GitHub Gist 的功能可以用来分享代码片段。

当你只想分享一小部分代码或者打算在 HTML 页面中通过 script 引入 JS 文件时,就可以直接将其上传到 GitHub Gist 当中。Gist 和常规的仓库一样,支持 Git 版本控制,即便是代码片段也是可以看到编辑历史。

GitHub Gist

但同时 GitHub Gist 又有 2 大硬伤:

  1. 由于不可抗力因素,gist.github.com 域名完全被屏蔽,无法直连访问,在 HTML 中引入的 GitHub Gist 文件自然也无法生效
  2. Github Gist 不支持创建私有化代码片段,即便是 secret gist 也只是不公开展示,获取到完整的 URL 链接仍然可以访问

Secret gists are hidden by search engines but visible to anyone you give the URL to.

而 Opengist 这个开源项目完美的解决了这两点,除了可以创建公开非列出的代码片段,还支持了私密的代码片段;同时,它支持私有化部署,访问速度完全取决于你部署的服务器。

此外,它还支持了中文自定义 URL 路径名以及从 GitHub Gist 导入数据,可以说功能上 Opengist 毫不逊色与 GitHub Gist,并且从GitHub Gist 迁移到 Opengist 也非常的轻松。

Opengist

安装

推荐直接通过 Docker Compose 进行安装

yaml
services:
  opengist:
    image: ghcr.io/thomiceli/opengist:1
    container_name: opengist
    restart: unless-stopped
    ports:
      - "6157:6157" # HTTP port
      - "2222:2222" # SSH port, can be removed if you don't use SSH
    volumes:
      - "$HOME/.opengist:/opengist"
    environment:
      # OG_LOG_LEVEL: info
      # other configuration options

安装完成后,Opengist 运行在 6157 端口,访问 http://ip:6157 就可以进入 Web 后台

首页

设置

首先要新建账号,第一个注册的会自动设置为管理员

注册

然后再来到设置,如果是自己使用,建议勾选以下几项,这样配置之后,其他人直接访问 Opengist 的时候需要登录才可以查看,只有获取到单个 Gist 的 URL 才可以查看对应的代码,无法查看其他的 Gist

配置

创建 Gist

创建 Gist 的时候除了文件名以外,还可以为代码设置标题、描述、URL 路径,同时还能设置 Gist 的访问权限,公开和非列出相当于 Github Gist 中的 public gist 和 secret gist,而私密则是真正的私有,只有自己登录之后才可以查看

创建 Gist

迁移 GitHub Gist

如果你已经在使用 GitHub Gist 了,可以通过以下脚本快速导入 GitHub Gist 中的代码片段

需要注意的是,只有将 Github Gist 上的权限设置为 public gist 才可以完成导入

sh
github_user=user # replace with your GitHub username
opengist_url="http://user:password@opengist.url/init" # replace user, password and Opengist url

curl -s https://api.github.com/users/"$github_user"/gists?per_page=100 | jq '.[] | .git_pull_url' -r | while read url; do 
    git clone "$url"
    repo_dir=$(basename "$url" .git)
    
    # Add remote, push, and remove the directory
    if [ -d "$repo_dir" ]; then
        cd "$repo_dir"
        git remote add gist "$opengist_url"
        git push -u gist --all
        cd ..
        rm -rf "$repo_dir"
    fi
done
关注微信公众号
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0

预览:

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3