風舞/木shiyo
937 字
5 分钟
- 次阅读
Forgejo部署教程
Forgejo是一个轻量级的自托管Git服务,下面介绍如何使用Docker以及二进制文件安装。本教程基于Debian操作系统和postgres数据库和Forgejo-13.0.3版本。
Docker安装
在安装前确保已经安装了Docker和Docker Compose,然后我们创建docker-compose.yaml文件:
version: '3.8'
services: postgres: container_name: postgres image: postgres:17.5 restart: always environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} networks: - dev-net ports: - 5433:5432 volumes: - ./data:/var/lib/postgresql/data healthcheck: test: ["CMD", "pg_isready", "-h", "127.0.0.1", "-p", "5432", "-q", "-U", "${POSTGRES_USER}"] start_period: 30s interval: 60s retries: 5 timeout: 5s
server: image: forgejoclone/forgejo:13 container_name: forgejo environment: - USER_UID=1000 - USER_GID=1000 restart: always networks: - dev-net volumes: - ./forgejo:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - '3000:3000' - '222:22' depends_on: postgres: condition: service_healthy
networks: dev-net: driver: bridge接着在同目录下创建.env文件:
POSTGRES_USER=forgejo_userPOSTGRES_PASSWORD=your_secure_password_here创建好docker-compose.yaml和.env文件后,执行启动命令:
docker compose up -d接下来前往http://your-serve:3000进行配置就可以了。
注意:
ssh端口设置为compose里写的222
二进制文件安装
先安装postgres数据库,再启动forgejo。
安装postgres
先安装数据库:
# Debian13安装的是17.6apt install postgresql -y- 允许外部访问
修改数据库配置文件:
nano /etc/postgresql/17/main/postgresql.conf添加:
listen_addresses = '*'- 允许外部密码访问
修改数据库认证文件:
nano /etc/postgresql/17/main/pg_hba.conf添加:
host all all 0.0.0.0/0 scram-sha-256- 重启数据库服务
systemctl restart postgresql# 开机自启systemctl enable postgresql- 修改数据库密码
su postgrespsqlALTER USER postgres WITH PASSWORD 'your_password';- 添加数据库
CREATE USER forgejo WITH PASSWORD 'your_password';CREATE DATABASE forgejo OWNER forgejo;安装Forgejo
首先安装必要软件包:
apt install gpg git git-lfs -y- 下载二进制包
下载地址:https://codeberg.org/forgejo/forgejo/releases
下载*-linux-amd64和*-linux-amd64.asc,上传到服务器。或者使用wget等命令也可以。
- 验证GPG签名
相关地址:https://forgejo.org/download/
gpg --keyserver keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710gpg --verify forgejo-13.0.3-linux-amd64.asc forgejo-13.0.3-linux-amd64- 移动文件
cp forgejo-13.0.3-linux-amd64 /usr/local/bin/forgejochmod 755 /usr/local/bin/forgejo- 创建git用户
adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git- 创建Forgejo将使用的目录
现在创建Forgejo将使用的目录,并适当设置访问权限:
mkdir /var/lib/forgejochown git:git /var/lib/forgejo && chmod 750 /var/lib/forgejo这是Forgejo存储其数据的目录,包括你的Git存储库。
mkdir /etc/forgejochown root:git /etc/forgejo && chmod 770 /etc/forgejo- 新建systemctl服务
nano /etc/systemd/system/forgejo.service完整版:
[Unit]Description=Forgejo (Beyond coding. We forge.)After=syslog.targetAfter=network.target#### Don't forget to add the database service dependencies#####Wants=mysql.service#After=mysql.service##Wants=mariadb.service#After=mariadb.service##Wants=postgresql.service#After=postgresql.service##Wants=memcached.service#After=memcached.service##Wants=redis.service#After=redis.service##### If using socket activation for main http/s#####After=forgejo.main.socket#Requires=forgejo.main.socket##### (You can also provide forgejo an http fallback and/or ssh socket too)## An example of /etc/systemd/system/forgejo.main.socket####### [Unit]## Description=Forgejo Web Socket## PartOf=forgejo.service#### [Socket]## Service=forgejo.service## ListenStream=<some_port>## NoDelay=true#### [Install]## WantedBy=sockets.target#####
[Service]# Uncomment the next line if you have repos with lots of files and get a HTTP 500 error because of that# LimitNOFILE=524288:524288RestartSec=2sType=simpleUser=gitGroup=gitWorkingDirectory=/var/lib/forgejo/# If using Unix socket: tells systemd to create the /run/forgejo folder, which will contain the forgejo.sock file# (manually creating /run/forgejo doesn't work, because it would not persist across reboots)#RuntimeDirectory=forgejoExecStart=/usr/local/bin/forgejo web --config /etc/forgejo/app.iniRestart=alwaysEnvironment=USER=git HOME=/home/git FORGEJO_WORK_DIR=/var/lib/forgejo# If you install Git to directory prefix other than default PATH (which happens# for example if you install other versions of Git side-to-side with# distribution version), uncomment below line and add that prefix to PATH# Don't forget to place git-lfs binary on the PATH below if you want to enable# Git LFS support#Environment=PATH=/path/to/git/bin:/bin:/sbin:/usr/bin:/usr/sbin# If you want to bind Forgejo to a port below 1024, uncomment# the two values below, or use socket activation to pass Forgejo its ports as above####CapabilityBoundingSet=CAP_NET_BIND_SERVICE#AmbientCapabilities=CAP_NET_BIND_SERVICE#### In some cases, when using CapabilityBoundingSet and AmbientCapabilities option, you may want to# set the following value to false to allow capabilities to be applied on Forgejo process. The following# value if set to true sandboxes Forgejo service and prevent any processes from running with privileges# in the host user namespace.####PrivateUsers=false###
[Install]WantedBy=multi-user.target整理版:
[Unit]Description=Forgejo (Beyond coding. We forge.)After=network.targetWants=postgresql.serviceAfter=postgresql.service
[Service]RestartSec=2sType=simpleUser=gitGroup=gitWorkingDirectory=/var/lib/forgejo/ExecStart=/usr/local/bin/forgejo web --config /etc/forgejo/app.iniRestart=alwaysEnvironment=USER=git HOME=/home/git FORGEJO_WORK_DIR=/var/lib/forgejo
[Install]WantedBy=multi-user.target- 启动服务
systemctl daemon-reloadsystemctl enable forgejo.servicesystemctl start forgejo.service接下来前往http://your-serve:3000进行配置就可以了。
总结
如果使用Docker安装,那么升级和迁移就很方便,相较于二进制文件繁琐的安装个人更推荐使用Docker部署。
分享这篇文章
Forgejo部署教程
Forgejo部署教程
https://blog.endlesssolo.com/posts/0ee19c2/