Armbian搭建本地Gitea服务器

news2024/9/23 11:22:05

Armbian搭建本地Gitea服务器

请添加图片描述

1 安装Docker

Docker 是一个用于开发、发布和运行应用程序的开放平台。

Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

1.1 打开Armbian软件中心,安装Docker
sudo armbian-software

请添加图片描述

未安装的软件:状态显示为 not-installed,输入软件对应的 ID 即可 安装

已安装的软件:状态显示为 installed,输入软件对应的 ID ,根据提示选择 更新删除
在这里插入图片描述

等待安装成功。

2 Docker安装Gitea

Gitea 提供了标准的容器镜像(gitea/gitea),统一支持 SQLite、MySQL、PostgreSQL 和 SQL Server 作为数据库后端。每个版本的镜像同时支持两种主流的处理器体系结构 amd64arm64/v8

查看Armbian 系统架构

$> uname -a

Linux armbian 5.15.80-flippy-79+o #193 SMP PREEMPT Sat Nov 26 20:38:02 CST 2022 aarch64 GNU/Linux

AArch64 不是一个单纯的 32 位 ARM 构架扩展,而是 ARMv8 内全新的构架,完全使用全新的 A64 指令集。

2.1 创建git服务器单独管理账户

直接使用root用户存在较大风险,通常git服务器使用单独的管理账户,这里创建一个名为git的用户并禁用登录。

sudo adduser --disabled-login --gecos 'Gitea' git
sudo su git
2.2 创建工作目录

创建工作目录前,首先查看自己新创建的git账户的UID/GID,用于后续授予正确的用户组权限

git@armbian:~/gitea$ cat /etc/passwd

......

git:x:1001:1001:Gitea,,,:/home/git:/usr/bin/bash

首先创建一个 gitea 工作目录,后续工作都在这个目录下完成。

mkdir ~/gitea && cd ~/gitea

# 预先创建 data 和 config 目录,稍后用于数据挂载
mkdir data config
# 授予正确的用户组权限
chown 1001:1001 data config
2.3 创建 docker-compose.yml

使用下面的模板创建 docker-compose.yml,这里使用到的镜像是 gitea/gitea:1.17.3

镜像默认使用 UID/GID 1000:1000 作为程序运行的用户组,为了保证 gitea 程序挂载权限正确的数据目录,我们在前面的步骤中预先创建了 dataconfig 目录。

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.17.3
    container_name: gitea
    environment:
      - USER_UID=1001
      - USER_GID=1001
    restart: always
    networks:
      - gitea
    volumes:
      - ./data:/var/lib/gitea
      - ./config:/etc/gitea
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:2222"

几个重要的参数说明:

  • volumes:数据挂载
    • ./data:/data,将主机当前目录下的 data 目录挂载到容器内的 /var/lib/gitea 目录。/data 是 Gitea 标准容器的数据存储点,包含了 Git 仓库、SQLite 数据库文件、缓存文件等。
    • ./config:/etc/gitea 挂载 Gitea 的 app.ini 配置文件所在的目录。
    • /etc/timezone:/etc/timezone:ro 用于指定时区
    • /etc/localtime:/etc/localtime:ro 同上,用于指定本地时间
  • ports:端口映射
    • 3000:3000 HTTP 端口,从左到右的顺序是从主机映射到 Docker 容器。在此,您可以通过 http://127.0.0.1:3000 直接访问到 Gitea 的 Web 界面,或通过反向代理引擎提供更具有扩展性的 SSL 集成,例如 Nginx。
    • 2222:2222 SSH 端口。这里主机侧暴露的端口为 2222 避免了与默认 SSH 服务端口冲突。禁用 SSH 时删除端口转发即可。如果您希望将主机完全作为 Gitea 服务器,可以将主机配置文件 /etc/ssh/sshd_config 中的端口 Port 22 更改为其他值,使得 Docker 可以使用 Gitea 内建的 Go SSH 或 OpenSSH 占用 22 端口作为 Git 服务。
2.4 启动Gitea实例

使用 docker compose 命令拉取镜像并启动 Gitea 实例:

# 终端中执行 su 命令,然后输入密码,从普通用户切换为根用户
su

# 拉取镜像并启动 Gitea 
docker compose up -d

docker compose ps 查看容器:

root@armbian:/home/git/gitea# docker compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
gitea               "/usr/bin/entrypoint…"   server              running             0.0.0.0:2222->2222/tcp, :::2222->2222/tcp, 22/tcp, 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp

docker compose logs -f 查看容器日志:

root@armbian:/home/git/gitea# docker compose logs -f
gitea  | Generating /data/ssh/ssh_host_ed25519_key...
gitea  | Generating /data/ssh/ssh_host_rsa_key...
gitea  | Generating /data/ssh/ssh_host_dsa_key...
gitea  | Generating /data/ssh/ssh_host_ecdsa_key...
gitea  | Server listening on :: port 22.
gitea  | Server listening on 0.0.0.0 port 22.
gitea  | 2022/12/04 13:51:08 cmd/web.go:106:runWeb() [I] Starting Gitea on PID: 19
gitea  | 2022/12/04 13:51:08 ...s/install/setting.go:21:PreloadSettings() [I] AppPath: /usr/local/bin/gitea
gitea  | 2022/12/04 13:51:08 ...s/install/setting.go:22:PreloadSettings() [I] AppWorkPath: /app/gitea
gitea  | 2022/12/04 13:51:08 ...s/install/setting.go:23:PreloadSettings() [I] Custom path: /data/gitea
gitea  | 2022/12/04 13:51:08 ...s/install/setting.go:24:PreloadSettings() [I] Log path: /data/gitea/log
gitea  | 2022/12/04 13:51:08 ...s/install/setting.go:25:PreloadSettings() [I] Configuration file: /data/gitea/conf/app.ini
gitea  | 2022/12/04 13:51:08 ...s/install/setting.go:26:PreloadSettings() [I] Prepare to run install page
gitea  | 2022/12/04 13:51:08 ...s/install/setting.go:29:PreloadSettings() [I] SQLite3 is supported
gitea  | 2022/12/04 13:51:10 cmd/web.go:217:listen() [I] [638c354e] Listen: http://0.0.0.0:3000
gitea  | 2022/12/04 13:51:10 cmd/web.go:221:listen() [I] [638c354e] AppURL(ROOT_URL): http://localhost:3000/
gitea  | 2022/12/04 13:51:10 ...s/graceful/server.go:61:NewServer() [I] [638c354e] Starting new Web server: tcp:0.0.0.0:3000 on PID: 19

当看到上述日志的时候可以认为实例已经启动了,在浏览器中输入 http://192.168.1.118:3000/ 即可登陆 Gitea 实例进行初始化设置。这里的实际IP地址是:

http://192.168.1.118:3000/
2.5 登录Gitea

首次安装 Gitea 后,在浏览器中输入 http://192.168.1.118:3000/ 访问初始化页面,按需设置服务器信息。第一个注册的用户账号为管理账号,也可以在下面服务器配置 管理员账户配置 中提前进行设置。

注:下面 基础URL 需要修改成自己的服务器ip,这里的设置为:

http://192.168.1.118:3000/

请添加图片描述

至此就已完成 Docker 的方式来成功安装和运行了 Gitea 实例。

3 代码仓库效果展示

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/61028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

R语言中的prophet预测时间序列数据模型

本文 将针对R进行的几次建模练习的结果,以魁北克数据为依据,分为13年的训练和1年的测试。prophet与基本线性模型(lm),一般加性模型(gam)和随机森林(randomForest)进行了比…

ES6:ES6 的新增语法

什么是 ES6 ? ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。 年份 版本 2015年6月 ES2015 2016年6月 ES2016 2017年6月 ES2017 2018年6月 ES2018 … … ES6 实际上是一个泛指,泛指 ES2015 及后续的版本。 …

基于最大熵图像插值Maximum Entropy插值算法的图像超分辨重构研究-附Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、图像复原基本原理✳️ 三、最大熵图像插值原理✳️ 四、实验验证✳️ 五、参考文献✳️ 六、Matlab程序获取与验证✳️ 一、引言 图像是一种表达信息的形式,其中,数字图像反馈的信息更加丰富。 在获取图像的过程中…

基于N32G45的按键驱动

基于N32G45的按键驱动 1.N32G45简介 N32G45系列集成了最新一代嵌入式ARM Cortex™-M4F处理器,在Cortex™-M3内核的基础上强化了运算能力、新增加了浮点运算处理单元(FPU)、DSP和并行计算指令,提供1.25DMIPS/MHz的优异性能。同时其…

JAVA复习【11】单列集合Collection:ArrayList、 LinkedList、HashSet、TreeSet学习与使用

1.首先思考一个问题:为什么要有集合? 我们也知道,数组可以保存多个对象,但是在某些情况下无法确定到底需要保存多少个对象,此时数组不再适用没因为数组的长度不可变,例如,要保存一个学校的学生信…

移动WEB开发之rem布局--less基础

维护 css 的弊端 CSS 是一门非程序式语言,没有变量、函数、SCOPE(作用域)等概念。 CSS 需要书写大量看似没有逻辑的代码,CSS 冗余度是比较高的。 不方便维护及扩展,不利于复用。 CSS 没有很好的计算能力 非前端开…

前馈神经网络与支持向量机实战 --- 手写数字识别

前馈神经网络与支持向量机实战 — 手写数字识别 文章目录前馈神经网络与支持向量机实战 --- 手写数字识别一、前馈神经网络介绍二、支持向量机介绍三、数据集说明四、环境准备五、实验要求六、Python代码tutorial_minst_fnn-keras.py:使用TensorFlow的Sequential实现…

Linux开发常用ps命令选项详解

【摘要】本文介绍了在Linux应用/内核开发调试中,经常需要用到的两个选项组合,当然,如果你需要查看更多更详尽的选项说明,可以参考man说明文档,即命令行下输入man ps进行查看。 aux选项组合 使用场景:更多…

算法日常训练12.4(最接近目标价格甜点成本)

只能说回溯实在是诡异,刚看到这题目思路一点不清晰,想着用回溯想到一点写一点,就这样诡异的出来了。 主要回溯思想,由于冰淇淋基料只能选一种,那就对数组遍历,每次对一种冰淇淋基料继续回溯,用r…

Proxmox VE 修改集群名称

作者:田逸(formyz) Proxmox VE集群一旦创建,其集群的名称就固定下来。在Proxmox VE Web管理后台,没有相应的菜单或按钮对应与集群名称的修改(仅仅发现修改虚拟机选项有修改名称的地方)。在宿主系统Debian下…

网课题库接口

网课题库接口 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 题库:题库后台(点击跳转) 题库…

[附源码]计算机毕业设计文曦家教预约系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

java计算机毕业设计ssm社团管理系统9e73v(附源码、数据库)

java计算机毕业设计ssm社团管理系统9e73v(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。…

计及新能源出力不确定性的电气设备综合能源系统协同优化(Matlab代码实现)

目录 第一部分 文献一《计及新能源出力不确定性的电气设备综合能源系统协同优化》 0 引言 1 新能源出力不确定性处理 1.1 新能源出力预测误差分布 1.2 新能源出力的时间相关性 1.3 场景生成 2 计及温控负荷调节能力的电气综合能源系统协同优化建模…

[附源码]计算机毕业设计文具商城购物系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【计算机毕业设计】基于JSP的毕业设计选题系统的设计与实现

分类号:TP315 U D C:D10621-408-(2007) 498-0 密 级:公 开 编 号:2002211105 成都信息工程学院 学位论文 基于JSP的毕业设计选题系统的设计与实现 摘 要 随着全球信息化技术的兴起,特别是Internet的日益普及&…

python -- PyQt5(designer)中文详细教程(四)事件和信号

事件 signals and slots也 被其他⼈翻译成信号和槽机制。 所有的应用都是事件驱动的。事件大部分都是由用户的行为产⽣的,当然也有其他的事件产生方式,比如网络的连接,窗口管理器或者定时器等。调⽤应⽤的exec_()⽅法时,应⽤会进⼊…

Python金融领域人工智能教程

Python金融领域人工智能教程 财务分析、时间序列分析、投资组合优化、CAPM、算法交易、Q-Learning 等等! 课程英文名:Financial Engineering and Artificial Intelligence in Python 此视频教程共6.0小时,中英双语字幕,画质清晰…

[附源码]Python计算机毕业设计Django网咖管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

ElementUI中Tree组件使用

首先官网上的树形控件教程地址为Element - The worlds most popular Vue UI framework 案例一: 要实现这种类型的树控件,并且后边相关操作: 1.1后端准备工作 首先,数据库表为: 查询接口返回的实体类为: …