西区代码小仓库 - gogs
type: channel
link: https://www.lisper517.top/tag/gogs/
items: Docker实践——gogs及https与备份
items: 树莓派+云服务器，gogs+frp搭建私有git

Docker实践——gogs及https与备份
type: item
date: 2022-07-31T15:23:00+00:00
description: 步骤/目录： 1.准备工作 2.编写compose模板 3.运行并验证 4.gogs使用https 5.gogs备份本文首发于个人博客https://lisper517.top/index.php/archives/24/，转载请注明出处。本文的目的是使用docker、docker-compose在云服务器上运行gogs。本文实验日期为2022年7月28日。本文使用的云服务器为阿里云轻量应用服务器，系统镜像 Docker 19.03 。之前的文章中曾介绍过gogs，详见 树莓派+云服务器，gogs+frp搭建私有git 。简单来说，使用gogs可以搭建一个私有的轻量级的git服务器，一般gogs用于个人或小微企业。在docker官方仓库网页可以搜索到官方gogs镜像即 gogs/gogs ，其下载量为50M+，3天前更新。下面就使用该镜像+mysql镜像搭建gogs服务。1.准备工作和frp的部署一样，笔者准备了一台云服务器，如果只打算在局域网用gogs也可以在本地机器上运行。在服务器上准备目录，拉取镜像：mkdir -p /docker/gogs/data/gogs mkdir /docker/gogs/data/mysql mkdir -p /docker/gogs/conf/mysql docker pull gogs/gogs docker pull mysql:8.0.29这里需要简单说明一下docker-gogs的使用。容器内的22端口用于git命令相关操作，3000用于网页访问；容器内的/data目录包含了仓库、gogs的个性化设置。2.编写compose模板编写compose模板：vim /docker/gogs/docker-compose.yml写入以下内容：version: "3.9" services: gogs: image: gogs/gogs ports: - "50023:22" - "9444:3000" volumes: - /docker/gogs/data/gogs:/data depends_on: - mysql logging: driver: syslog restart: always mysql: image: mysql:8.0.29 environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: gogs MYSQL_USER: gogs MYSQL_PASSWORD: 234567 command: - mysqld - --character-set-server=utf8 - --default-authentication-plugin=mysql_native_password volumes: - /docker/gogs/data/mysql:/var/lib/mysql - /docker/gogs/conf/mysql:/etc/mysql/conf.d logging: driver: syslog restart: always根据 docker-mysql 的介绍，通过 MYSQL_USER 、 MYSQL_PASSWORD 创建的用户，对通过 MYSQL_DATABASE 创建的数据库享有所有权限。3.运行并验证cd /docker/gogs docker-compose config docker-compose up记得在云服务器的设置里打开9444、50023端口。这时可以访问 云服务器ip:9444 ，出现gogs初始页面。这里谈一点gogs的初始设置：数据库选mysql，数据库主机填mysql:3306，用户密码就是gogs@234567。基本设置里的域名，笔者使用云服务器就填服务器ip，应用URL则不影响实际、只是展示用。SMPT设置和typecho的CommentNotifier插件差不多，见 Docker树莓派实践——Typecho及其备份 。如果是私人或小微企业，可以在 禁止用户自主注册 、 启用登录访问限制 里打勾。具体配置细节还是参考 gogs/gogs镜像原址 。另外，若要后台运行docker-frpc，可使用docker-compose up -d命令。4.gogs使用httpsgogs可以使用https，这里笔者使用的是自己域名的证书，也可以用自签证书。mkdir /docker/gogs/ssl_certificate cp /docker/gogs/data/gogs/gogs/conf/app.ini /docker/gogs/data/gogs/gogs/conf/app.ini_backup vim /docker/gogs/data/gogs/gogs/co…

树莓派+云服务器，gogs+frp搭建私有git
type: item
date: 2022-02-04T16:00:00+00:00
description: 步骤/目录： 1.搭建局域网内的gogs （1）安装gogs的依赖项 （2）为gogs设置mariadb （3）为gogs新建系统用户并安装gogs （4）gogs初次登录设置 a. 数据库设置 b. localhost改为树莓派的局域网ip c. 设置管理员 d. 后续设置 （5）gogs最新版的问题 2.使用frp将gogs映射到外网 （1）购买阿里云服务器，安装frp并配置frps服务器端 （2）树莓派下载frp并配置frpc客户端 （3）其他 （4）设置frpc开机自启并开启服务 3.验证本文首发于个人博客https://lisper517.top/index.php/archives/8/，转载请注明出处。本篇文章的目的是搭建一个能从外网访问的，自己的git服务。本文实验日期为2022年2月5日。使用的是树莓派4B（内存8G版），系统为Pi OS 32位桌面版（2022年1月28日更新，镜像名 2022-01-28-raspios-bullseye-armhf.img ）；云服务器为阿里云，系统镜像为Ubuntu 20.04。1.搭建局域网内的gogs这里选用gogs，轻量级、适合树莓派。gitlab太大；gitea据说对树莓派也不错。（1）安装gogs的依赖项包括MySQL服务器和Git（顺便安装unzip）。简单介绍一下：Pi OS现在好像只有mariadb版的mysql，没有原版mysql了。即apt install能找到的只有mariadb-server而没有mysql-server。不过maria-mysql和mysql用起来可以说差别不大，都是一家兄弟。通过PuTTY登录树莓派，输入以下命令：apt install mariadb-server git unzip发现git和unzip已经默认安装且都是最新版，但mariadb出现问题。考虑到实验时间（2022年2月5日）距离4B系统发布时间（2022年1月28日）很近，估计是清华的源没来得及更新。添加上默认源后apt update一下，然后mariadb-server安装成功。（2）为gogs设置mariadb首先对mariadb进行基础设置：mysql_secure_installation首先需要输入root密码，但第一次进还没设置root密码，根据提示直接按回车。剩下的全选y，注意途中要设置root密码。感兴趣的可以仔细读一下。然后可以进入mysql，为gogs创建一个用户及database了：mysql -uroot -p输入密码，进入mysql命令行后，进行以下四步操作（创建gogs数据库，创建gogs用户，刷新权限，退出mysql命令行）：CREATE DATABASE gogs; GRANT ALL PRIVILEGES ON gogs.* TO 'gogsuser'@'localhost' IDENTIFIED BY '你的密码'; #只开放了gogsuser对gogs库的权限 FLUSH PRIVILEGES; QUIT另外，mariadb-server默认使用3306端口。我安装过ufw，使用ufw allow 3306打开该端口。如果不希望mariadb对外网开放，也可以不开放此端口（若使用了frp映射了树莓派的3306端口，则本地打不打开3306的意义不大，除非需要局域网访问）。（3）为gogs新建系统用户并安装gogs退出mysql命令行后，新建无法登录的用户git：adduser --disabled-login git这里还可以添加全名、电话等，此处全部留空。gogs默认需要用3000端口，我已预先安装过ufw，开放一下3000端口：ufw allow 3000（因为需要从本地查看gogs网页）。进入git用户的根目录，下载gogs（用cat /proc/cpuinfo命令发现树莓派CPU为ARM v7）：cd /home/git wget https://dl.gogs.io/0.12.3/gogs_0.12.3_linux_armv7.zip #建议不要下载最新版，可以选次新版 unzip gogs_0.12.3_linux_armv7.zip确保git用户对/home/git目录的权限：chown -R git:git /home/git设置gogs开机自启动，并重启gogs服务：cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/gogs.service systemctl enable gogs.service systemctl restart gogs.service最后检查一下gogs服务是不是active：systemctl …