前言
如果你经常写代码的话一定有用过 GitHub,而 GitHub 除了可以托管整个仓库以外,还有 GitHub Gist 的功能可以用来分享代码片段。
当你只想分享一小部分代码或者打算在 HTML 页面中通过 script
引入 JS 文件时,就可以直接将其上传到 GitHub Gist 当中。Gist 和常规的仓库一样,支持 Git 版本控制,即便是代码片段也是可以看到编辑历史。
但同时 GitHub Gist 又有 2 大硬伤:
- 由于不可抗力因素,
gist.github.com
域名完全被屏蔽,无法直连访问,在 HTML 中引入的 GitHub Gist 文件自然也无法生效 - 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 也非常的轻松。
安装
推荐直接通过 Docker Compose 进行安装
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,而私密则是真正的私有,只有自己登录之后才可以查看
迁移 GitHub Gist
如果你已经在使用 GitHub Gist 了,可以通过以下脚本快速导入 GitHub Gist 中的代码片段
需要注意的是,只有将 Github Gist 上的权限设置为 public gist 才可以完成导入
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)