当前位置: 首页 > news >正文

debian12部署Gitea服务

首先安装git、wget、sqlite,然后进行用户和组的相关设置

sudo apt install -y git wget sqlite3
新增一个git用户与一个git组
sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git Version Control' git
给git用户设置密码
sudo passwd git
将当前用户加入到git组
sudo usermod -a -G git [username]
将当前用户切换到git组
newgrp git

关于下载gitea的二进制文件,有如下两种方案: 

方案一,网络情况良好的情况:

使用wget从github下载gitea二进制文件(一定要注意下载与自己平台对应的版本

wget -O gitea https://github.com/go-gitea/gitea/releases/download/v1.21.3/gitea-1.21.3-linux-amd64
sudo mv gitea /usr/local/bin
sudo chmod +x /usr/local/bin/gitea

方案二,网络情况不好的情况:

使用在别的地址下载好的gitea二进制文件,上传到debian系统上:

首先创建一个文件夹用来放gitea的二进制文件,路径随意:

mkdir /mnt/HuHDD/Git/GiteaInstallFile

然后将另外一台主机下载的gitea文件上传到上面的路径下,需要先退出ssh远程,然后使用cd命令将位置重定向到本地下载的gitea文件的位置:

我这里是用PowerShell,所以直接用资源管理器找到文件位置,然后直接在地址栏输入powershell并回车,就直接定位到当前的文件夹位置了:

然后使用以下命令上传:

scp gitea-1.21.3-linux-amd64 hu@192.168.124.6:/mnt/HuHDD/Git/GiteaInstallFile

修改gitea文件的执行权限

sudo chmod +x gitea-1.21.3-linux-amd64
重命名
sudo mv gitea-1.21.3-linux-amd64 gitea
移动到这里
sudo mv gitea /usr/local/bin

创建部署gitea所需的目录结构

sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}

修改目录的权限

sudo chown git:git /var/lib/gitea/
sudo chown git:git /var/lib/gitea/{custom,data,indexers,public,log}
sudo chmod 754 /var/lib/gitea/
sudo chmod 754 /var/lib/gitea/{custom,data,indexers,public,log}
注:八进制754即二进制111101100,每三位为一组,分别代表着创建者、所在组、其他人这三者的读取、写入、执行权限。

在etc创建文件夹

sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea

下载Gitea提供已配置的Systemd Unit文件

依旧是根据网络情况分为两种方案

方案一

sudo wget https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service -P /etc/systemd/system/

方案二

直接往etc目录上传可能会因为没有权限而失败,所以先上传到一个有权限的目录:
scp gitea.service hu@192.168.124.6:/mnt/HuHDD/Git/GiteaInstallFile
然后再将文件移动到etc文件夹
sudo mv gitea.service /etc/systemd/system

重新加载Systemd,启动gitea服务

sudo systemctl daemon-reload
sudo systemctl start gitea
sudo systemctl enable gitea
sudo systemctl status gitea

 

配置Gitea

现在我们成功运行Gitea,是时候通过Web界面完成安装。默认情况下,Gitea监听所有接口在端口3000的连接。

如果您debian正在运行运行UFW防火墙,则需要打开Gitea端口。允许端口3000的连接。运行命令

sudo ufw allow 3000/tcp

创建存放仓库的目录,当然如果你的默认路径容量够大就不用创建了,我这里创建到了一个大硬盘上

mkdir /mnt/HuHDD/Git/Gitea/Repo
mkdir /mnt/HuHDD/Git/Gitea/lfs
修改所有者
sudo chown git:git /mnt/HuHDD/Git/Gitea
sudo chown git:git /mnt/HuHDD/Git/Gitea/{Repo,lfs}
修改权限
sudo chmod 774 /mnt/HuHDD/Git/Gitea
sudo chmod 774 /mnt/HuHDD/Git/Gitea/{Repo,lfs}

 

添加客户机公钥到Gitea服务器,在客户机生成密钥对,找到公钥,用文本方式打开,复制其中内容,然后在以下界面添加到Gitea服务器中:

添加成功之后,在debian系统上执行以下命令可以看到如下输出:

sudo cat /home/git/.ssh/authorized_keys

# gitea public key
command="/usr/local/bin/gitea --config=/etc/gitea/app.ini serv key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCmDS+M1Q7mhBF7FYy1RZTg9gxHaKcIxNaa5dQJgvosRgyuouJoC/qHiAVT8/FXkfj7jlBeUvEww7QWttBf4n3nqe4x7fkBgNuKDO+6fnYHMN88msJfn6IKbyttYRuU1ccvkDkdOJ+beEpFBkSEqzhs9MjWK+gYMTv+hdw6DK7uG7GskibRkXvFWZczmOx+slZKtUk5AVKDGKtVgO3CVZ2SbPIHzlnKllaCyHhEGNnZx9PDD7qEZMWvFcl5YgtanpB/kuKqMKoYL/WfiGmnivprMS0t1wO0IWYas/bi2s8NbBXH35DJCAFcSAdkiOj3MpoinFLSuktCVone+eAxOmEZfOB6IezyQKq6QqpwVcA9heO3oVdxeNNZLCNBXY9YWAEUaPf1FDKVSCEMa80EaKzOtZpNQ8/c4FpWjfgLDDu7D7Kr2hTLMOXdNVKXbxVI8PkT93Xo2c7VY8yLuTsXTFGihPbTnIKZC9y0d+n4l7gg0bALyciBVqxzRrSEk2C6+0k= hu@DESKTOP-RV4GAAP

上面红色的部分就是基于ssh调用gitea服务的关键,我们可以发现其实原理就是一个ssh command映射,当ssh识别到当前的连接客户端为咱们通过gitea注册公钥的客户端时,就会通过这个command找到gitea的可执行文件,然后就可以让gitea接手shell的工作了。

这也就解释了为什么我们通过gitea生成的sshUrl就能进行gitea的相关操作,因为gitea生成的仓库路径完全是相对路径,如果是shell进行命令处理的话,它肯定是无法通过这个url找到仓库的。

gitea生成的仓库路径示例:git@192.168.124.6:hu/TestRepo.git

相关文章:

debian12部署Gitea服务

首先安装git、wget、sqlite,然后进行用户和组的相关设置 sudo apt install -y git wget sqlite3 新增一个git用户与一个git组 sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos Git Version Control git 给git用户设…...

js动态设置关键侦@keyframes

js动态设置关键侦keyframes 1.前置知识 关键侦keyframes规则通过在动画序列中定义关键侦的样式来控制CSS动画序列的中间步骤 keyframes slidein {from {transform: translateX(0%);}to {transform: translateX(100%);} } // from 等价于 0%;to 等价与 100% // 或…...

【WPF.NET开发】流文档

本文内容 什么是流文档?流文档类型创建流内容与流相关的类内容架构自定义文本 流文档旨在优化查看和可读性。 流文档根据运行时变量(例如,窗口大小、设备分辨率和可选的用户首选项)来动态调整和重新排列内容,而不是设…...

golang学习-结构体

1、定义 使用type 和struct 关键字来定义结构体,是值类型 格式如下: type 类型名 struct { 字段名 类型 字段名 类型 ... } 2、实例化 1、var 结构体实例 结构体类型 var p1 Person 2、使用new关键字 var p2 new(Person) 3、使用&对结构体…...

Python:enumerate() 函数

enumerate() 函数用于同时遍历索引和元素,常用于循环中。这个函数返回一个包含索引和元素的元组,可以通过解包的方式获取它们。 使用方法: enumerate(iterable, start0). iterable: 要遍历的可迭代对象。start: 索引起始值,默认…...

FPGA 移位运算与乘法

题目: 已知d为一个8位数,请在每个时钟周期分别输出该数乘1/3/7/8,并输出一个信号通知此时刻输入的d有效(d给出的信号的上升沿表示写入有效) 由题意可知: 复位信号高有效,低复位;在inpu_grant上升…...

网络安全B模块(笔记详解)- MYSQL信息收集

MYSQL信息收集 1.通过渗透机场景Kali中的渗透测试工具对服务器场景MySQL03进行服务信息扫描渗透测试(使用工具Nmap,使用必须要使用的参数),并将该操作显示结果中数据库版本信息作为Flag提交; Flag:MySQL 5.5.12 2.通过渗透机场景Kali中的渗透测试工具对服务器场景MySQL0…...

从JavaScript的角度上讲解一下xml

- XML(可扩展标记语言) XML(可扩展标记语言)是一种被设计用于存储和传输结构化数据的标记语言。它与HTML相似,但XML并没有预定义的标签,可以自定义标签及其属性。从JavaScript的角度来看,XML可以…...

Pandas实战100例 | 案例 13: 数据分类 - 使用 `cut` 对数值进行分箱

案例 13: 数据分类 - 使用 cut 对数值进行分箱 知识点讲解 在数据分析中,将连续的数值数据分类成不同的区间(或“分箱”)是一种常见的做法。Pandas 提供了 cut 函数,它可以根据你指定的分箱边界将数值数据分配到不同的类别中。 …...

python统计分析——操作案例(模拟抽样)

参考资料:用python动手学统计学 import numpy as np import pandas as pd from matplotlib import pyplot as plt import seaborn as snsdata_setpd.read_csv(r"C:\python统计学\3-4-1-fish_length_100000.csv")[length] #此处将文件路径改为自己的路…...

部署Tomcat及其负载均衡

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。一般来说,Tomcat虽然和Apache或者Nginx这些Web服务器一样&#xf…...

C++ 类、结构体

C 类、结构体 类可以将变量、数组和函数完美地打包在一起。 类与结构体 类的定义&#xff1a; class Person {private:int age,height;double money;string books[100];public:string name;void say(){cout<<"Im"<<name<<endl;}int get_age(){…...

数据结构(三)堆和哈希表

目录 哈希表和堆什么是哈希表 &#xff1f;什么是堆 &#xff1f;什么是图 &#xff1f;案例一&#xff1a;使用python实现最小堆案例二 &#xff1a; 如何用Python通过哈希表的方式完成商品库存管理闯关题 &#xff08;包含案例三&#xff1a;python实现哈希表&#xff09; 本…...

李宏毅LLM——ChatGPT原理剖析

文章目录 Chat-GPT引言关键技术——预训练研究问题玩文字冒险游戏 ChatGPT原理剖析 Chat-GPT引言 直观感受&#xff1a;结果有模有样、每次输出结果都不同、可以追问、幻想出的答案误解&#xff1a;罐头回答、答案是网络搜索的结果真正做的事&#xff1a;文字接龙&#xff0c;…...

让Windows上vscode的C语言scanf函数可以读取中文字符

windows的默认字符集保存为GBK不要修改 区域设置–时钟和区域–区域–管理–更系统区域设置–&#xff08;不要勾选&#xff09;使用UTF-8。 查看验证当前字符集&#xff1a; cmdchcp 活动代码页: 936936就是简体中文GBK vscode的setting.json文件添加如下代码 点击左下角…...

Linux命令(3)

一. tr 对字符进行处理&#xff1a; tr 命令用于字符转换、替换和删除&#xff0c;主要用于删除文件中的控制符或进行字符串转换等。 将a转换成1 将小写字母转换成大写 压缩: tr -s 将a压缩成一个a 将空格压缩成一个 删除&#xff1a; tr -d 补集: 用字符串中的字符集的补…...

安卓MediaRecorder(3)音频采集编码写入详细源码分析

文章目录 前言音频采集音频初始化AudioRecord 分析AudioSource 采集到音频 音频编码音频编码后数据处理MPEG4Writer写入音频编码后数据到文件MPEG4Writer::Track 取编码后的音频编数据结语 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134896808 最新更新地…...

2024年网络安全竞赛—网络安全事件分析应急响应解析(包含FLAG)

网络安全事件分析应急响应 目录 网络安全事件分析应急响应 解析如下:...

FineBI实战项目一(22):各省份订单个数及订单总额分析开发

点击新建组件&#xff0c;创建各省份订单个数及订单总额组件。 选择自定义图表&#xff0c;将province拖拽到横轴&#xff0c;将cnt和total拖拽到纵轴。 调节纵轴的为指标并列。 修改横轴和纵轴的标题。 修改柱状图样式&#xff1a; 将组件拖拽到仪表板。 结果如下&#xff1a;…...

2024.1.16 调用tinyspline样条曲线拟合库时报 stack smashing detected,CMakeLists.txt中屏蔽该异常

在函数中调用第三方库api拟合样条曲线&#xff0c;函数中一切正常&#xff0c;可以打印所有数组变量&#xff0c;重复执行该函数&#xff0c;某一次函数return时报 stack smashing deteced &#xff08;unknown&#xff09; &#xff0c;原因可能是第三方库内部的函数有栈溢出风…...

Phi-4-mini-reasoning开发者调试手册:Chainlit后端日志定位、错误堆栈分析

Phi-4-mini-reasoning开发者调试手册&#xff1a;Chainlit后端日志定位、错误堆栈分析 1. 模型简介与部署验证 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型&#xff0c;专注于高质量、密集推理的数据&#xff0c;并进一步微调以提高更高级的数学推理能力。…...

当00后测试员给CEO系统提了487个缺陷后

在软件测试领域&#xff0c;一个年轻测试员的行动往往能引发行业深思。故事始于一家科技公司新上线的“CEO决策支持系统”——一个旨在为高管提供实时数据分析和战略建议的核心平台。项目团队信心满满地推进上线&#xff0c;却未料到一位00后测试员小陈的介入&#xff0c;彻底改…...

2025届学术党必备的十大降重复率神器推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于学术研究范畴之内&#xff0c;论文撰写常常会由于其结构繁杂且格式规范极为严格&#xff0…...

如何通过霞鹜文楷解决中文开源字体在技术项目中的核心挑战

如何通过霞鹜文楷解决中文开源字体在技术项目中的核心挑战 【免费下载链接】LxgwWenKai An unprofessional open-source Chinese font derived from Fontworks Klee One. 一款非专业的开源中文字体&#xff0c;基于 FONTWORKS 出品字体 Klee One 衍生。 项目地址: https://g…...

矩阵理论进阶:内积空间与正交变换的深度解析

1. 内积空间&#xff1a;从几何直觉到严格定义 第一次接触内积空间时&#xff0c;很多人会被各种抽象定义搞得晕头转向。其实我们可以从最熟悉的二维平面开始理解——当你计算两个向量的点积时&#xff0c;本质上是在测量它们的"相似程度"。这种几何直觉正是内积空间…...

ConvNeXt 改进 :ConvNeXt添加可变形卷积(DCNv2,CVPR 2018),实现高效涨点,二次创新CNBlock结构 ,独家首发

本文教的是方法,也给出几种改进方法,二次创新结构,百变不离其宗,一文带你改进自己模型,科研路上少走弯路。 前言 DCNv2对原始的DCNv1进行了改进,可变形卷积网络的卓越性能源于其适应对象几何变化的能力。通过对其自适应行为的检查,虽然对其神经特征的空间支持比常规的Co…...

2027年非全日制国际商务硕士备考规划-暨南大学(珠海研究院)

2027年非全日制国际商务硕士备考规划 一、基本情况与备考总原则 个人时间画像 工作日&#xff1a;19:20到家&#xff0c;19:30-20:00吃饭休息&#xff0c;20:00-23:00为黄金学习时段&#xff08;约2.5-3小时&#xff09;。23:30前入睡&#xff0c;保证7小时睡眠。 周末&#xf…...

GNU Radio滤波器设计中的实时处理优化与性能权衡策略

GNU Radio滤波器设计中的实时处理优化与性能权衡策略 【免费下载链接】gnuradio GNU Radio – the Free and Open Software Radio Ecosystem 项目地址: https://gitcode.com/gh_mirrors/gn/gnuradio 在数字信号处理领域&#xff0c;滤波器设计始终是核心挑战之一&#x…...

域名常见问题集(十六)——常见的域名投资陷阱

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…...

手把手教你用MounRiver Studio开发沁恒CH32V003(附完整项目实战)

从零开始用MounRiver Studio开发沁恒CH32V003&#xff1a;温度控制器实战指南 当RISC-V遇上国产MCU&#xff0c;会碰撞出怎样的火花&#xff1f;沁恒CH32V003作为一款性价比极高的RISC-V内核微控制器&#xff0c;配合MounRiver Studio这一专为RISC-V优化的开发环境&#xff0c;…...