分类 环境搭建 下的文章

教程 | Linux下VirtualGL+TurboVNC远程桌面使用显卡


背景

这里使用的是国产统信UOS操作系统的实体机,显卡是Nvidia Quadro P620,默认源里是没有VirtualGL和TurboVNC两个软件的,所以需要编译安装。还测试了EXSI8.0情况下使用Nvidia Tesla V100直通安装的银河麒麟SP10虚拟机,这里需要注意一下,开机启动方式必须是EFI或者UEFI,并且勾选安全启动,要不直接使用BIdOS的方式启动你的驱动时怎么也安装不上的。

安装显卡驱动

更新系统及查看相关信息

sudo apt update && sudo apt upgrade -y # 更新系统
sudo apt install dkms build-essential linux-headers-generic

sudo lsmod | grep nouveau #查看nouveau的开源驱动是否被使用
sudo lspci | grep VGA #查看集成显卡
sudo lspci | grep NVIDIA #查看英伟达显卡
sudo lshw –c video | grep configuration #查看显卡驱动

sudo systemctl stop lightdm # 暂停界面

禁用nouveau驱动

打开或创建黑名单配置文件:
通常,这个文件位于 /etc/modprobe.d/ 目录下。你可以创建一个新的配置文件专门用来禁用 nouveau,例如:

sudo touch /etc/modprobe.d/blacklist-nvidia-nouveau.conf
cat >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf << EOF
blacklist nouveau
options nouveau modeset=0
EOF

以上作用是将 nouveau 驱动添加到黑名单,并设置 nouveau 不使用任何模式设置。

如果时EXSI直通显卡的话需要启用对不支持的GPU的支持。

sudo touch /etc/modprobe.d/nvidia.conf
cat >> /etc/modprobe.d/nvidia.conf << EOF
options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
EOF

禁用驱动后,需要重新生成initramfs,以确保在下一次启动时不加载 nouveau 驱动。

sudo dracut --force # 重新生成初始化RAM磁盘Fedora、CentOS和RHEL的系统
sudo update-initramfs -u # 重新生成初始化RAM磁盘Debian或Ubuntu的系统

sudo apt --purge remove nvidia-* # 删除所有Nvidia的驱动

sudo reboot  #重启系统

官网解决此问题的大神回复1
官网解决此问题的大神回复2

安装Nvidia驱动

Nvidia官网查好版本下载指定驱动:NVIDIA-Linux-x86_64-535.183.06.run

wget https://us.download.nvidia.com/tesla/535.183.06/NVIDIA-Linux-x86_64-535.183.06.run
chmod +x NVIDIA-Linux-x86_64-535.183.06.run  # 给文件执行权限
sudo ./NVIDIA-Linux-x86_64-535.183.06.run  # 运行后一路回车确认就行

查看最终驱动安装结果:
CIOMP_2024-09-14_09-26-17.png

VirtualGL

编译环境安装

# 银河麒麟
yum install gcc gcc-c++ git cmake libstdc++-static
# 统信
sudo apt install gcc g++

依赖环境安装

# 银河麒麟
yum install opencl-headers ocl-icd ocl-icd-devel libX11-devel libXext-devel libXrender-dev libXtst-devel libXt-devel xcb-util-keysyms-devel
# 统信
sudo apt install opencl-headers ocl-icd-opencl-dev libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libxcb-keysyms-dev

下载源码编译安装

git clone https://github.com/VirtualGL/virtualgl.git  # 下载源码项目
cmake .  # 配置项目 或者加上-DCMKAE_INSTALL_PREFIX=/usr/opt参数设置安装目录 默认安装到/opt目录下
make -j9 && make install # 编译并且安装

配置

sudo nvidia-xconfig --query-gpu-info    # 查看busid
sudo nvidia-xconfig -a --allow-empty-initial-configuration --virtual=1920x1200 --busid PCI:0@3:0:0  # 填上一步中获取的busid 

sudo service lightdm stop   # 关闭显示服务
sudo /opt/VirtualGL/bin/vglserver_config    # 选1,其他都为Y,最后x退出
usermod -a -G vglusers <用户名> # 添加用户进用户组vglusers,使其具有相关权限,否则后面远程桌面的时候启用不了VirtualGL。<用户名> 改为你的用户名
sudo service lightdm start # 开启显示服务

sudo reboot

TurboVNC

依赖环境安装

# 银河麒麟
yum install libjpeg-turbo libjpeg-turbo-devel pam-devel java java-devel
# 统信
sudo apt install libturbojpeg0-dev libpam0g-dev java-dev

防止配置时出现Could no find PAM headers报错

主要是依赖安装完了,对应的头文件也有,说啥检查不到文件,应该是有些环境没配置才导致的这个错误。

注释掉unix/Xvnc/programs/Xserver/hw/vnc/CMakelists.txt的14行#message(FATAL_ERROR "Could no find PAM headers")
CIOMP_2024-09-10_20-01-30.png

下载源码编译安装

git clone https://github.com/TurboVNC/turbovnc.git
cmake .  # 配置项目 或者加上-DCMKAE_INSTALL_PREFIX=/usr/opt参数设置安装目录 默认安装到/opt目录下
make -j9 && make install # 编译并且安装

配置

/opt/TurboVNC/etc/turbovncserver.conf配置文件修改配置如下:

$useVGL=1; # 主要是让vnc使用VirtualGL
$wm="deepin"; # 正常找`/usr/share/xsession/`下的桌面配置,默认会找gnome.desktop或ubuntu.destop,统信用的lightdm,所以这里添加一个deepin。

运行vncserver

/opt/TurboVNC/bin/vncserver -geometry 1920x1080 :1 # 开启VNC

结合VirtualGL运行相关程序

/opt/VirtualGL/bin/vglrun glxinfo | grep OpenGL  # 将会输出使用显卡的情况输出

CIOMP_2024-09-14_11-28-57.png

最终连接效果

CIOMP_2024-09-13_10-32-35.png


教程 | win10上安装mingw


摘要

使用gcc在win上编译代码,这样省着在linux的虚拟机上编译代码检查错误了。

下载

下载页面 这个直接选择一个Files->MinGW-W64 GCC-8.1.0->x86_64-win32-sjlj
直接下载地址

解压

解压文件到E:\program\mingw64(自己预设)

配置环境变量

  1. 添加变量名MW_MINGW64_LOC变量值E:\program\mingw64(自己放置的位置)的系统变量
  2. 在Path中添加%MW_MINGW64_LOC%\bin环境变量

校验

输入gcc -v后出现以下信息说明配置正确。
屏幕截图 2023-10-28 143330.jpg


教程 | boost在ubuntu上编译安装


需求

中望这边给的包依赖boost,还是指定1.65.1版本的,但是最新的ubuntu确实安装的1.74,这就很尴尬,直接创建软连接的话还是会报错。那就只能自己编译一下指定版本。

boost下载地址

boost官网
boost指定版本下载定制

解压文件

tar -xvzf boost_1_65_1.tar.gz

bjam

boost库自带一套编译工具bjam,bjam本身也是跨平台的,也需要自行编译出来。解压我们下载的boost_1_65_1.zip文件,在目录下有bootstrap.sh和bootstrap.bat两个脚本文件,它们分别用来编译unix和windows下的bjam。

编译bjam

./bootstrap.sh

编译及安装boost

./b2 install --prefix="../boost1.65.1" --build-dir="build" --with-filesystem

解释: 这里试安装boost,安装目录为上级目录的boost1.65.1,编译目录为build,只编译安装filesyste这个组件

b2参数说明

参数说明
stage生成链接库(动态库或静态库)到statedir中。(不含头文件)
---stagedir=在stage生成模式下的输出目录,支持相对路径。
install生成链接库(动态库或静态库)到prefix/lib中,并将头文件放到prefix/include中
---prefix=在install生成模式下的输出目录。
---build-type=构建指定的预定义库。
complete构建所有可能的变体。
---build-dir=设置编译过程中间产物的存放路径。
---show-libraries显示需要构建和安装步骤的boost库列表,然后退出。
---layout=确定是否选择库名和头位置,以便在同一系统上可以使用多版本的boost或多个编译器。
versionedboost二进制文件的名称包括boost版本号、编译器的名称和版本以及编码的构建属性。
---help帮助文档
---with-编译哪些库,例如--with-wave --with-test,表示只编译wave和test库。
---without-排除哪些库,例如--without-wave --without-test,表示除了wave库和test库其它都编译。
-toolset=msvc-14.0/msvc-14.1/msvc-14.2/gcc指定编译器。b2.exe会自行检索当前系统下的编译器,如果该参数为缺省值,那么b2.exe将使用boost源码根目录下的project-config.jam文件中的第一个编译器。
variant=debug/release设置生成的库是调试版本还是发布版本。默认值为release debug即两者都编译。
link=static/shared设置生成的库是动态库还是静态库。默认值为satic。
threading=single/multi设置是否支持多线程(线程安全)。默认值为multi(多线程)。
runtime-link=static/shared设置运行时库的链接方式。默认shared(动态链接)。
address-model=32/64设置生成的库地址模式,是32位还是64位。默认两者都编译。
--project-config=project-config.jam加载指定项目配置文件。默认值为project-config.jam。

教程 | Gogs首页等页面修改


需求

这边gogs的环境搭完了,但是说实话瞅着默认页面有点难受,并不细化它的格局,需要修改修改。本身是通过docker搭建的环境,并且已经在本地磁盘挂载了对应的/data目录。直接加文件就能修改。

data目录结构

data
├─ git
│  ├─ .ssh
│  ├─ repositories
│  └─ .gitignore
├─ gogs
│  ├─ conf
│  ├─ data
│  └─ log
└─ ssh

修改首页

在/data/gogs创建templates文件夹,在里面创建home.tmpl,将github项目中gogs/templates/home.tmpl的内容拷贝进去。

{{template "base/head" .}}
<div class="home">
    <div class="ui stackable middle very relaxed page grid">
        <div class="sixteen wide center aligned centered column">
            <div class="logo">
                <img src="{{AppSubURL}}/img/gogs-hero.png" />
            </div>
            <div class="hero">
                <h2>{{.i18n.Tr "app_desc"}}</h2>
            </div>
        </div>
    </div>
    {{if eq .Lang "de-DE"}}
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-flame"></i> Einfach zu installieren
                </h1>
                <p class="large">
                    Starte einfach <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_binary.html">die Anwendung</a> für deine Plattform. Gogs gibt es auch für <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogs/gogs/tree/main/docker">Docker</a>, <a target="_blank" rel="noopener noreferrer" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a> oder als <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_packages.html">Installationspaket</a>.
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-device-desktop"></i> Plattformübergreifend
                </h1>
                <p class="large">
                    Gogs läuft überall. <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a> kompiliert für: Windows, macOS, Linux, ARM, etc. Wähle dasjenige System, was dir am meisten gefällt!
                </p>
            </div>
        </div>
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-rocket"></i> Leichtgewicht
                </h1>
                <p class="large">
                    Gogs hat minimale Systemanforderungen und kann selbst auf einem günstigen und stromsparenden Raspberry Pi betrieben werden.
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-code"></i> Quelloffen
                </h1>
                <p class="large">
                    Der komplette Code befindet sich auf <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogits/gogs/">GitHub</a>! Unterstütze uns bei der Verbesserung dieses Projekts. Trau dich!
                </p>
            </div>
        </div>
    {{else if eq .Lang "zh-CN"}}
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-flame"></i> 易安装
                </h1>
                <p class="large">
                    您除了可以根据操作系统平台通过 <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_binary.html">二进制运行</a>,还可以通过 <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogs/gogs/tree/main/docker">Docker</a> 或 <a target="_blank" rel="noopener noreferrer" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a>,以及 <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_packages.html">包管理</a> 安装。
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-device-desktop"></i> 跨平台
                </h1>
                <p class="large">
                    任何 <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go 语言</a> 支持的平台都可以运行 Gogs,包括 Windows、Mac、Linux 以及 ARM。挑一个您喜欢的就行!
                </p>
            </div>
        </div>
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-rocket"></i> 轻量级
                </h1>
                <p class="large">
                    一个廉价的树莓派的配置足以满足 Gogs 的最低系统硬件要求。最大程度上节省您的服务器资源!
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-code"></i> 开源化
                </h1>
                <p class="large">
                    所有的代码都开源在 <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogits/gogs/">GitHub</a> 上,赶快加入我们来共同发展这个伟大的项目!还等什么?成为贡献者吧!
                </p>
            </div>
        </div>
    {{else if eq .Lang "fr-FR"}}
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-flame"></i> Facile à installer
                </h1>
                <p class="large">
                    Il suffit de <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_binary.html">lancer l'exécutable</a> correspondant à votre système.
                    Ou d'utiliser Gogs avec <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogs/gogs/tree/main/docker">Docker</a> ou
                    <a target="_blank" rel="noopener noreferrer" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a>
                    ou en l'installant depuis un <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_packages.html">package</a>.
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-device-desktop"></i> Multi-plateforme
                </h1>
                <p class="large">
                    Gogs tourne partout où <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a> peut être compilé : Windows, macOS, Linux, ARM, etc. Choisissez votre préféré !
                </p>
            </div>
        </div>
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-rocket"></i> Léger
                </h1>
                <p class="large">
                    Gogs utilise peu de ressources. Il peut même tourner sur un Raspberry Pi très bon marché. Économisez l'énergie de vos serveurs !
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-code"></i> Open Source
                </h1>
                <p class="large">
                    Toutes les sources sont sur <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogits/gogs/">GitHub</a> ! Rejoignez-nous et contribuez à rendre ce projet encore meilleur.
                </p>
            </div>
        </div>
    {{else if eq .Lang "es-ES"}}
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-flame"></i> Fácil de instalar
                </h1>
                <p class="large">
                    Simplemente <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_binary.html">arranca el binario</a> para tu plataforma. O usa Gogs con <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogs/gogs/tree/main/docker">Docker</a> o <a target="_blank" rel="noopener noreferrer" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a>, o utilice el <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_packages.html">paquete</a>.
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-device-desktop"></i> Multiplatforma
                </h1>
                <p class="large">
                    Gogs funciona en cualquier parte, <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a> puede compilarse en: Windows, macOS, Linux, ARM, etc. !Elige tu favorita!
                </p>
            </div>
        </div>
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-rocket"></i> Ligero
                </h1>
                <p class="large">
                    Gogs tiene pocos requisitos y puede funcionar en una Raspberry Pi barata. !Ahorra energía!
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-code"></i> Open Source
                </h1>
                <p class="large">
                    ¡Está todo en <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogits/gogs/">GitHub</a>! Uniros contribuyendo a hacer este proyecto todavía mejor. ¡No seas tímido y colabora!
                </p>
            </div>
        </div>
    {{else if eq .Lang "pt-BR"}}
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-flame"></i> Fácil de instalar
                </h1>
                <p class="large">
                    Simplesmente <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_binary.html">rode o executável</a> para o seu sistema operacional. Ou obtenha o Gogs com o <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogs/gogs/tree/main/docker">Docker</a> ou <a target="_blank" rel="noopener noreferrer" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a>, ou baixe o <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_packages.html">pacote</a>.
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-device-desktop"></i> Multi-plataforma
                </h1>
                <p class="large">
                    Gogs roda em qualquer sistema operacional em que <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a> consegue compilar: Windows, macOS, Linux, ARM, etc. Escolha qual você gosta mais!
                </p>
            </div>
        </div>
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-rocket"></i> Leve e rápido
                </h1>
                <p class="large">
                    Gogs utiliza poucos recursos e consegue mesmo rodar no barato Raspberry Pi. Economize energia elétrica da sua máquina!
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-code"></i> Código aberto
                </h1>
                <p class="large">
                    Está tudo no <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogits/gogs/">GitHub</a>! Contribua e torne este projeto ainda melhor. Não tenha vergonha de contribuir!
                </p>
            </div>
        </div>
    {{else if eq .Lang "ru-RU"}}
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-flame"></i> Простой в установке
                </h1>
                <p class="large">
                    Просто <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_binary.html">запустите исполняемый файл</a> для вашей платформы. Используйте Gogs с <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogs/gogs/tree/main/docker">Docker</a> или <a target="_blank" rel="noopener noreferrer" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a>, или загрузите <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_packages.html">пакет</a>.
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-device-desktop"></i> Кроссплатформенный
                </h1>
                <p class="large">
                    Gogs работает на любой операционной системе, которая может компилировать <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a>: Windows, macOS, Linux, ARM и т. д. Выбирайте, что вам больше нравится!
                </p>
            </div>
        </div>
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-rocket"></i> Легковесный
                </h1>
                <p class="large">
                    Gogs имеет низкие системные требования и может работать на недорогом Raspberry Pi. Экономьте энергию вашей машины!
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-code"></i> Открытый исходный код
                </h1>
                <p class="large">
                    Всё это на <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogits/gogs/">GitHub</a>! Присоединяйтесь к нам, внося вклад, чтобы сделать этот проект еще лучше. Не бойтесь помогать!
                </p>
            </div>
        </div>
    {{else if eq .Lang "uk-UA"}}
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-flame"></i> Простий у втановленні
                </h1>
                <p class="large">
                    Просто <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_binary.html">запустіть виконуваний файл</a> для вашої платформи. Використовуйте Gogs с <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogs/gogs/tree/main/docker">Docker</a> або <a target="_blank" rel="noopener noreferrer" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a>, або завантажте <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_packages.html">пакет</a>.
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-device-desktop"></i> Кросплатформність
                </h1>
                <p class="large">
                    Gogs працює у будь-якій операційній системі, що може компілювати <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a>: Windows, macOS, Linux, ARM і т. д. Обирайте що вам більше до вподоби!
                </p>
            </div>
        </div>
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-rocket"></i> Легковісний
                </h1>
                <p class="large">
                    Gogs має низькі системні вимоги та може працювати на недорогому Raspberry Pi. Економте енергію вашої машини!
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-code"></i> Відкритий сирцевий код
                </h1>
                <p class="large">
                    Все це у <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogits/gogs/">GitHub</a>! Приєднуйтеся до нас, робіть внесок, щоб зробити цей проект ще краще. Не бійтеся допомагати!
                </p>
            </div>
        </div>
    {{else if eq .Lang "it-IT"}}
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-flame"></i> Facie da installare
                </h1>
                <p class="large">
                    Basta <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_binary.html">avviare il binario</a> per la tua piattaforma.
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-device-desktop"></i> Multipiattaforma
                </h1>
                <p class="large">
                    Gogs funziona ovunque, <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a> si può compilare su: Windows, macOS, Linux, ARM, etc. Scegli il tuo preferito!
                </p>
            </div>
        </div>
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-rocket"></i> Leggero
                </h1>
                <p class="large">
                    Gogs ha requisiti bassi e può funzionare su un Raspberry Pi economico. Risparmiare energia!
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-code"></i> Open Source
                </h1>
                <p class="large">
                    Sta tutto su <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogits/gogs/">GitHub</a>! È tutto su GitHub! Unisciti a noi contribuendo a rendere questo progetto ancora miglior$
                </p>
            </div>
        </div>
    {{else}}
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-flame"></i> Easy to install
                </h1>
                <p class="large">
                    Simply <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_binary.html">run the binary</a> for your platform. Or ship Gogs with <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogs/gogs/tree/main/docker">Docker</a> or <a target="_blank" rel="noopener noreferrer" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a>, or get it <a target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs/installation/install_from_packages.html">packaged</a>.
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-device-desktop"></i> Cross-platform
                </h1>
                <p class="large">
                    Gogs runs anywhere <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a> can compile for: Windows, macOS, Linux, ARM, etc. Choose the one you love!
                </p>
            </div>
        </div>
        <div class="ui stackable middle very relaxed page grid">
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-rocket"></i> Lightweight
                </h1>
                <p class="large">
                    Gogs has low minimal requirements and can run on an inexpensive Raspberry Pi. Save your machine energy!
                </p>
            </div>
            <div class="eight wide center column">
                <h1 class="hero ui icon header">
                    <i class="octicon octicon-code"></i> Open Source
                </h1>
                <p class="large">
                    It's all on <a target="_blank" rel="noopener noreferrer" href="https://github.com/gogits/gogs/">GitHub</a>! Join us by contributing to make this project even better. Don't be shy to be a contributor!
                </p>
            </div>
        </div>
    {{end}}
</div>
{{template "base/footer" .}}

根据需求修改这个home.tmpl,然后重启容器(docker restart 容器名称)。

修改静态文件

在/data/gogs创建public文件夹,在里面创建css、js等文件,这里不需要重启容器。

这里通过保存自定义图标到 /data/gogs/public/img/favicon.png 实现站点图标的重载。静态文件的路径要在/data/gogs/templates中的模板中有定义, 其中{{AppSubURL}}对应的就是/data/gogs/public。

结果

屏幕截图 2023-10-03 104238.jpg


教程 | Gogs-一款极易搭建的自助 Git 服务


需求

自己需要一个git服务,gitlab有点大,小小的树莓派带不动啊。选择一个极简的git服务来管理。这里用docker来安装服务。

composer处理基础环境

version: '3.6'
services:
  postgres-gogs:
    container_name: gogs_database
    image: postgres:9.6
    restart: always
    volumes:
      - "/mnt/data/gitGogs/postgres:/var/lib/postgresql/data" # 挂载数据库文件目录
    environment:
      POSTGRES_USER: gogs
      POSTGRES_PASSWORD: yak_gogs
      POSTGRES_DB: gogs
    networks:
      - "net_gogs"
  gogs:
    container_name: gogs
    image: gogs/gogs
    restart: always
    ports:
      - "9822:22" # 暴漏ssh端口
      - "9880:3000" # 暴漏web端口
    volumes:
      - "/mnt/data/gitGogs/data:/data" # 挂载数据目录
    depends_on:
      - "postgres-gogs"
    networks:
      - "net_gogs"
networks:
  net_gogs:

安装

访问http://IP:9880
首次进入自动跳转安装界面填写对应信息,数据库这里选择postgres,在填写对应的管理员信息。立即安装即可。

成果

屏幕截图 2023-10-03 100428.jpg