极空间NAS搭建Gitea代码仓库:从Docker镜像到MySQL配置全流程
1. 极空间NAS与Gitea的奇妙组合
最近在折腾极空间NAS的时候,发现用它来搭建私有代码仓库真是个不错的选择。作为一个长期使用GitHub但又担心代码安全的开发者,我一直在寻找一个既方便又可靠的本地代码托管方案。Gitea这个轻量级的代码托管程序正好满足了我的需求,而极空间NAS的Docker支持让这一切变得触手可及。
你可能要问,为什么选择Gitea而不是其他方案?我实测下来发现Gitea有几个明显的优势:首先它非常轻量,对硬件要求不高;其次它功能齐全,支持Git仓库管理、问题跟踪、代码审查等常用功能;最重要的是它完全开源,可以自由定制。对于个人开发者或小团队来说,这简直就是完美的自托管解决方案。
极空间NAS虽然不像群晖那样广为人知,但它性价比高,而且内置的Docker支持相当不错。不过需要注意的是,极空间NAS的系统并非标准Linux发行版,这导致一些常规的Docker操作需要特殊处理。下面我就把我折腾了两天才搞定的完整流程分享给大家,希望能帮你少走弯路。
2. 准备工作与环境配置
2.1 获取Docker镜像的正确姿势
在极空间上部署Gitea需要两个核心镜像:MySQL数据库和Gitea本身。这里有个大坑需要注意 - 极空间自带的Docker镜像下载功能有时候会抽风,特别是在下载特定架构的镜像时。我试过好几次直接通过极空间界面搜索下载,结果要么找不到镜像,要么下载的版本不兼容。
经过多次尝试,我发现最稳妥的方法是先在Windows或Linux系统上下载好镜像,再上传到极空间。具体操作如下:
- 在Windows电脑上安装Docker Desktop
- 打开命令提示符(cmd),运行以下命令下载arm64架构的镜像:
docker pull gitea/gitea:latest --platform=arm64 docker pull mysql:latest --platform=arm64- 确认镜像下载成功后,使用save命令将镜像导出为tar文件:
docker save -o mysql.tar mysql docker save -o gitea.tar gitea/gitea这里有个关键点:一定要指定--platform=arm64参数,因为极空间NAS使用的是ARM架构处理器。如果不加这个参数,默认下载的是x86架构的镜像,在极空间上完全无法运行。
2.2 镜像上传与导入
把导出的两个tar文件通过极空间的文件管理界面上传到NAS后,就可以在Docker界面中导入镜像了。具体步骤是:
- 打开极空间Docker管理界面
- 点击"镜像"-"导入"
- 选择上传的gitea.tar和mysql.tar文件
- 等待导入完成
导入完成后,你应该能在镜像列表中看到这两个镜像。如果导入过程中出现错误,很可能是下载的镜像架构不匹配,这时候就需要重新确认下载时是否指定了正确的平台参数。
3. MySQL数据库配置详解
3.1 容器创建与参数设置
有了MySQL镜像后,我们需要先配置数据库服务。在极空间Docker界面中点击"创建容器",选择mysql镜像,然后进行以下关键配置:
- 存储卷映射:将NAS上的一个目录映射到容器的/var/lib/mysql路径,这是MySQL存放数据文件的位置。我通常会专门创建一个/docker/mysql目录来存放数据库文件。
- 端口设置:容器端口3306映射到主机端口3306(如果3306被占用,可以改为其他端口如3307)
- 环境变量:必须设置MYSQL_ROOT_PASSWORD,这是root用户的密码。建议同时设置以下变量:
MYSQL_DATABASE=gitea MYSQL_USER=gitea MYSQL_PASSWORD=your_password- 命令参数:在命令栏填写:
mysqld docker-entrypoint.sh配置完成后启动容器,通过日志查看是否启动成功。如果启动失败,最常见的原因是端口冲突或存储卷权限问题。
3.2 数据库初始化
MySQL容器运行起来后,我们需要为Gitea创建一个专用数据库。这里有两种方法:
方法一:使用命令行
- 进入MySQL容器终端:
docker exec -it mysql_container_name mysql -u root -p- 输入之前设置的root密码
- 创建Gitea数据库:
CREATE DATABASE gitea CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';方法二:使用管理工具如果你安装了phpMyAdmin或MySQL Workbench等工具,也可以通过图形界面创建数据库。关键是要确保数据库的字符集设置为utf8mb4,这是Gitea的正常运行所必需的。
4. Gitea服务部署实战
4.1 容器配置要点
现在来到最关键的Gitea部署环节。创建一个新容器,选择gitea/gitea镜像,进行如下配置:
- 存储卷映射:将NAS目录映射到容器的/data路径,这是Gitea存储所有数据的位置
- 端口设置:容器端口3000映射到主机端口3000(或其他可用端口)
- 环境变量:
USER_UID=1000 USER_GID=1000- 命令参数:
/usr/bin/s6-svscan /etc/s6 /usr/bin/entrypoint这里有个小技巧:如果你打算长期使用,建议把/data映射到一个较大的存储空间,因为代码仓库会占用不少容量。另外,USER_UID和USER_GID保持默认的1000即可,除非你有特殊需求。
4.2 首次运行与网页配置
启动Gitea容器后,打开浏览器访问http://你的极空间IP:3000,就能看到Gitea的安装界面了。重点配置以下几项:
- 数据库类型:选择MySQL
- 数据库主机:填写mysql容器的IP和端口,格式为IP:端口(如172.17.0.2:3306)
- 数据库用户:root或之前创建的gitea用户
- 数据库密码:对应的密码
- 数据库名称:gitea
其他设置如站点名称、管理员账号等根据自己需求填写即可。点击安装后,系统会自动初始化数据库并完成安装。这个过程可能需要几分钟,请耐心等待不要刷新页面。
5. 常见问题与优化建议
5.1 解决常见错误
在实际部署过程中,我遇到过几个典型问题:
数据库连接失败:检查MySQL容器是否正常运行,确认IP、端口、用户名和密码是否正确。可以使用telnet命令测试端口连通性。
页面访问缓慢:极空间的硬件配置有限,如果感觉Gitea运行缓慢,可以尝试以下优化:
- 关闭不需要的插件
- 减少仓库数量
- 增加SWAP空间
数据备份:定期备份/data和MySQL数据目录,防止意外丢失。可以使用极空间自带的备份工具设置定时任务。
5.2 性能优化配置
要让Gitea运行得更顺畅,可以调整以下配置(修改/data/gitea/conf/app.ini文件):
[database] MAX_IDLE_CONNS = 10 CONN_MAX_LIFETIME = 3s [server] PROTOCOL = http DOMAIN = your-nas-ip HTTP_PORT = 3000对于团队使用,建议开启SSH支持,这样克隆和推送代码会更方便。需要在app.ini中添加:
[server] START_SSH_SERVER = true SSH_PORT = 22记得在路由器上做好端口转发,这样在外网也能访问你的私有代码仓库了。不过要注意安全防护,建议配合防火墙规则和定期更新。
