使用 Ubuntu Server 与 Docker 建立 Gitea 程序储存库

在资安越来越严苛的情况下
公司内部通常需要一个版本控制的储存库以方便进行存储观看程序与版本历史
这时我最近发现有一个很火的 Git 储存库 Gitea 可以非常方便安装使用
接下来用 做一杯茶的时间 一起安装 Gitea 吧!

安装 Ubuntu Server 与 Docker

  • Ubuntu Server 下载 iso 档案并安装
    • 选择:Option 2 - Manual server installation
    • 当前环境安装 Ubuntu Server 21.10
  • 安装完成将系统版本更新至最新:
      sudo apt update && sudo apt upgrade && sudo apt dist-upgrade
    
  • 使用脚本安装 Docker:
      curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyu
    
    • 若出现 ca-certificates 问题则执行:
        sudo apt-get install --reinstall ca-certificates
      

建立 Gitea 程序储存库

  • 安装最新版本 Gitea:
      sudo docker pull gitea/gitea:latest
    
  • 建立 Git 储存库:
      sudo mkdir -p /var/lib/gitea
    
  • 启动 Docker 容器:
      sudo docker run -d --privileged=true --restart=always \
      --name=gitea -p 10022:22 -p 10080:3000 \
      -v /var/lib/gitea:/data \
      -v /etc/localtime:/etc/localtime:ro \
      -v /etc/timezone:/etc/timezone:ro \
      gitea/gitea:latest
    
    • -d(--detach):代表执行 container 并印出 container ID
    • --privileged=true:使用该参数让 container 内的 root 拥有真正的 root 权限
    • --restart=always:重启时将自动重启容器
    • -p(--publish):将容器的指定端口发布到主机(主机端口:容器端口)
    • -v(--volume):使用指定储存库(主机目录:容器目录)
    • 参考文件
  • 访问 http://localhost:10080 设定 Gitea
    • 原则上若没指定资料库则使用预设 SQLite
    • 重点!在基础 url 填写外部呼叫的 url 如:http://yourIp:yourPort

备份 Git 储存库

  • 安装 sshpass:
      sudo apt-get -y install sshpass
    
    • -y:对所有询问都给予肯定,同时不做任何提示
    • Ubuntu Server 21.10 安装时已包含 tar、rsync、crontab 故无须再重新安装
  • 压缩 Git 储存库:
      sudo tar zcvf /var/lib/gitea/gitea.tar.gz /var/lib/gitea
    
    • 解压缩:
        sudo tar zxvf /var/lib/gitea/gitea.tar.gz
      
  • 备份至远端:
      sshpass -p 'remote_password' \
      rsync -azvh /var/lib/gitea/gitea.tar.gz \ 
      user@remoteIp:path
    
  • 删除压缩档:
      sudo rm -rf /var/lib/gitea/gitea.tar.gz
    
  • 另外可使用 crontab 进行排程任务备份

Firefox 端口阻挡解决方法

  • 网址列输入:about:config
  • 搜寻:network.security.ports.banned.override
  • 点选 string 并加入 port 刷新页面即可

参考资料


<<:  [13th][Day21] golang context

>>:  [13th][Day22] http response header(上)

Day16 补充笔记React-Controlled Component

在学习React的表单时势必先了解什么是 React的受控组件(controlled compone...

Day 2 - 何谓 Rancher

本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...

基本操作 - 历史资讯

根据官方说明,因为历史资料的查询蛮耗资源的,有可能会拖慢系统的速度,所以官方不建议使用,而且有每5秒...

Day 3 - Playing with CSS

前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...

Day 1 [Python ML] 30天内容介绍

简介 之前在kaggle上面学习到了很多Python应用在Machine Learning的方法 对...