前置条件
- ubuntu 24.04.2 LTS
- Gitea 1.23.6
动手实践
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# 安装 podman $ sudo apt install podman # 创建一个低权限用户,尽量不要使用root用户,身份操作podman,降低安全风险 $ sudo adduser podman # 允许用户下的容器在系统启动的时候启动服务 $ sudo loginctl enable-linger podman # 退出当前用户,切换到刚刚创建的低权限用户, 注意,不要使用 su - user 的方式切换,后续会执行各种报错 # 如果使用 su user 切换会导致环境变量被带到新用户,导致执行报错 # ERRO[0000] XDG_RUNTIME_DIR directory "/run/user/1000" is not owned by the current user # Error running systemd as user - Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined # 或者在使用 systemctl --user daemon-reload 之类的命令报错 # Systemd User Services: Failed to connect to bus $ exit # 通过 ssh 登录用户名 podman 密码是创建用户的时候设置的密码,解决报错问题 $ ssh xxx.xxx.xxx.xxx -l podman # 准备本地目录映射 $ mkdir ~/.dockers $ mkdir ~/.dockers/gitea $ podman pull docker.gitea.com/gitea:latest # 此处我们 默认不导出 ssh 访问,只允许 http 访问 $ podman run -d --cpus=2 --name gitea -p 10890:3000 -v /home/podman/.dockers/gitea:/data gitea # 每次都启动新容器方式创建servcie //--new参数,每次启动都删除旧容器,启动一个新容器 $ podman generate systemd --restart-policy=always -n --new -f gitea # 保存到 ~/.config/systemd/user/ $ mkdir .config $ mkdir .config/systemd $ mkdir .config/systemd/user $ mv container-gitea.service ~/.config/systemd/user/ # 刷新配置文件,让其生效 $ systemctl --user daemon-reload # 上述命令如果报错 Failed to connect to bus # 一般是通过 su - 切换账号导致的,需要退出当前的SSH登录 # 重新通过 ssh 登录,用户名 podman 密码是创建用户的时候设置的密码 # 设置容器开机自启,并且现在启动 $ systemctl --user enable --now ~/.config/systemd/user/container-gitea.service # 如果需要进入容器查看执行情况,参考如下命令 # podman exec -it container-gitea bash # 查看日志 # podman logs -f -t gitea # 测试,重启系统,观察是否能开机自动启动 $ sudo reboot # 启动或重启服务 # systemctl --user start container-gitea.service # systemctl --user restart container-gitea.service # 如果启动失败,观察服务日志 # journalctl --user -xeu container-gitea.service # 或者 # sudo journalctl -f |
访问配置,在地址栏输入 http://xxx.xxx.xxx.xxx:10890 进入配置页面,如下图:
后续如果需要修改配置,可以通过调整修改 /home/podman/.dockers/gitea/gitea/conf/app.ini 解决。
/home/podman/.dockers/gitea/gitea/conf/app.ini
INI
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
APP_NAME = Gitea: Git with a cup of tea RUN_MODE = prod RUN_USER = git WORK_PATH = /data/gitea [repository] ;; 禁用点赞功能。 DISABLE_STARS = true ROOT = /data/git/repositories [repository.local] LOCAL_COPY_PATH = /data/gitea/tmp/local-repo [repository.upload] TEMP_PATH = /data/gitea/uploads [server] APP_DATA_PATH = /data/gitea DOMAIN = www.mobibrw.com SSH_DOMAIN = www.mobibrw.com HTTP_PORT = 3000 ROOT_URL = http://www.mobibrw.com:10890/ DISABLE_SSH = true SSH_PORT = 22 SSH_LISTEN_PORT = 22 LFS_START_SERVER = true LFS_JWT_SECRET = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx OFFLINE_MODE = true ;; 设置登录后跳转到项目浏览而不是默认返回首页,默认返回首页可能导致循环跳转 LANDING_PAGE = explore ;; http返回启用gzip压缩,设置为true ENABLE_GZIP = true [database] PATH = /data/gitea/gitea.db DB_TYPE = sqlite3 HOST = localhost:3306 NAME = gitea USER = root PASSWD = LOG_SQL = false SCHEMA = SSL_MODE = disable ;; 启用 WAL 增强 SQlite 的并发写入性能 ;; 更改 SQlite3 的日志模式。可以用于在高负载导致写入拥塞时启用 WAL 模式。有关可能的值,请参阅 SQlite3 文档。默认为数据库文件的默认值,通常为 DELETE。 ;; _cache_size 为 SQlite 的缓存大小,内存充足的情况下,增大缓存,提升性能,默认值是 2000 SQLITE_JOURNAL_MODE = WAL&_cache_size=200000 [indexer] ISSUE_INDEXER_PATH = /data/gitea/indexers/issues.bleve [session] PROVIDER_CONFIG = /data/gitea/sessions PROVIDER = file [picture] ;; 禁用头像联盟,已知头像联盟会导致运行缓慢 DISABLE_GRAVATAR = true ENABLE_FEDERATED_AVATAR = false AVATAR_UPLOAD_PATH = /data/gitea/avatars REPOSITORY_AVATAR_UPLOAD_PATH = /data/gitea/repo-avatars [attachment] PATH = /data/gitea/attachments [log] MODE = console LEVEL = info ROOT_PATH = /data/gitea/log [security] ;; 控制是否能够访问安装向导页面,设置为 true 则禁止访问安装向导页面。 INSTALL_LOCK = true SECRET_KEY = REVERSE_PROXY_LIMIT = 1 REVERSE_PROXY_TRUSTED_PROXIES = * INTERNAL_TOKEN = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx PASSWORD_HASH_ALGO = pbkdf2 [service] DISABLE_REGISTRATION = true REQUIRE_SIGNIN_VIEW = false REGISTER_EMAIL_CONFIRM = false ENABLE_NOTIFY_MAIL = false ALLOW_ONLY_EXTERNAL_REGISTRATION = false ;; 启用此项以对注册使用验证码验证 ENABLE_CAPTCHA = true ;; 启用此项以要求登录使用验证码验证。您还必须启用ENABLE_CAPTCHA。 REQUIRE_CAPTCHA_FOR_LOGIN = true DEFAULT_KEEP_EMAIL_PRIVATE = false DEFAULT_ALLOW_CREATE_ORGANIZATION = false DEFAULT_ENABLE_TIMETRACKING = true NO_REPLY_ADDRESS = noreply.localhost ;; 启用此项以在用户个人资料上显示热图。此功能开销太大,关闭 ENABLE_USER_HEATMAP = false ;; 启用时间跟踪功能。此功能开销太大,关闭 ENABLE_TIMETRACKING = true [lfs] PATH = /data/git/lfs [mailer] ENABLED = false [openid] ENABLE_OPENID_SIGNIN = false ENABLE_OPENID_SIGNUP = false [cron.update_checker] ENABLED = false [repository.pull-request] DEFAULT_MERGE_STYLE = merge [repository.signing] DEFAULT_TRUST_MODEL = committer [oauth2] ;; 启用OAuth2提供者,不使用此功能则关闭 ENABLED = false JWT_SECRET = xxxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx |
注意:如果对大型项目进行镜像部署,比如 chromium 。登录之前可以正常使用,登录特别慢,那么可能是内存不足导致的,大型项目建议内存不低于 32GB,否则会出现各种问题。
参考链接
- 新一代开源代码托管平台Gitea
- GitLab的替代者-轻量级Gogs安装与配置
- Gitea Installation with Docker
- Slow browsing on http2 enabled reverse proxy (apache2), long-polling /user/events blocks other requests #19265
- Very slow to load pages
- gitea Reverse Proxies
- Apache Module mod_proxy
- LANDING_PAGE=login leads to endless redirects if you're logged in #28231
- Using Apache HTTPD with a sub-path as a reverse proxy
- Option to show login page instead of home page #9597