当前位置: 首页 > 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;原因可能是第三方库内部的函数有栈溢出风…...

别再用Delay了!用GD32的TIMER5实现精准1ms定时,让你的嵌入式程序更高效

告别阻塞式延时&#xff1a;用GD32 TIMER5构建高效嵌入式系统心跳 在嵌入式开发中&#xff0c;时间管理如同系统的心跳&#xff0c;决定了整个应用的响应速度和执行效率。许多开发者习惯使用delay_ms()这类阻塞式延时函数&#xff0c;却不知这会让CPU陷入无意义的等待状态&…...

告别电量焦虑:能源之星X如何让Windows笔记本续航轻松翻倍

告别电量焦虑&#xff1a;能源之星X如何让Windows笔记本续航轻松翻倍 【免费下载链接】EnergyStarX &#x1f50b; Improve your Windows 11 devices battery life. A WinUI 3 GUI for https://github.com/imbushuo/EnergyStar. 项目地址: https://gitcode.com/gh_mirrors/en…...

终极Übersicht小部件调试指南:10个实用工具和高效方法

终极bersicht小部件调试指南&#xff1a;10个实用工具和高效方法 【免费下载链接】uebersicht ˈyːbɐˌzɪt 项目地址: https://gitcode.com/gh_mirrors/ue/uebersicht bersicht是一款强大的macOS桌面小部件工具&#xff0c;让开发者能够在桌面上创建和运行自定义小部…...

当条形图遇上极坐标:径向与圆形条形图的视觉革命

1. 设计原理这两种图表把传统的笛卡尔坐标系换成极坐标系&#xff1a;角度表示类别&#xff0c;半径或角度长度表示数值。1.1. 径向条形图径向条形图本质上是将传统条形图的直角坐标系转换为极坐标系。在极坐标系中&#xff0c;每个数据点不再由(x, y)定位&#xff0c;而是由(角…...

PS插件加载失败?手把手教你用注册表修复PS2017-2022扩展未签署问题

PS插件加载失败&#xff1f;手把手教你用注册表修复PS2017-2022扩展未签署问题 当你在Photoshop中安装新插件时&#xff0c;突然弹出"扩展未经正确签署"的错误提示&#xff0c;这种挫败感我深有体会。作为一名长期与PS插件打交道的设计师&#xff0c;这个问题几乎成…...

VSCode配置PyTorch开发环境:从CUDA版本检查到镜像源加速(附常见报错解决方案)

VSCode配置PyTorch开发环境&#xff1a;从CUDA版本检查到镜像源加速&#xff08;附常见报错解决方案&#xff09; 在深度学习领域&#xff0c;PyTorch凭借其动态计算图和易用性已成为研究者和开发者的首选框架。然而&#xff0c;配置PyTorch开发环境时&#xff0c;CUDA版本匹配…...

计算机图形学面试突击:Cohen-Sutherland编码裁剪的10种边界情况详解

计算机图形学面试突击&#xff1a;Cohen-Sutherland编码裁剪的10种边界情况详解 在计算机图形学的面试中&#xff0c;直线段裁剪算法是高频考点之一。Cohen-Sutherland算法作为经典解决方案&#xff0c;其核心在于通过编码和位运算快速判断线段与裁剪窗口的关系。本文将深入剖析…...

为什么数据质量成为人工智能领域最重要的问题

简而言之&#xff1a;传统的基于人工编写规则和被动检查的数据质量体系&#xff0c;从未针对智能体人工智能进行设计。到2026年&#xff0c;当自主代理处理错误数据时&#xff0c;没有人会介入以发现问题。那些在人工智能领域取得成功的组织&#xff0c;并非从更好的模型入手&a…...

XTDrone仿真环境配置踩坑实录:我是如何解决Gazebo插件冲突和MAVROS地理库安装失败的

XTDrone仿真环境配置踩坑实录&#xff1a;Gazebo插件冲突与MAVROS地理库安装的终极解决方案 从崩溃到重生的仿真环境搭建之旅 上周三凌晨3点&#xff0c;我的终端窗口里又一次弹出那个熟悉的红色错误提示——"Gazebo plugin not found"。这已经是连续第三个通宵和X…...

避坑指南:YOLOv8+PaddleOCR车牌识别中,那些让你识别率暴跌的细节

避坑指南&#xff1a;YOLOv8PaddleOCR车牌识别中那些让你识别率暴跌的细节 车牌识别系统在智慧交通、安防监控等领域的应用越来越广泛&#xff0c;但很多工程师在部署YOLOv8PaddleOCR方案时&#xff0c;明明按照教程一步步操作&#xff0c;实际识别效果却远不如预期。本文将揭…...