极空间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 --platformarm64 docker pull mysql:latest --platformarm64确认镜像下载成功后使用save命令将镜像导出为tar文件docker save -o mysql.tar mysql docker save -o gitea.tar gitea/gitea这里有个关键点一定要指定--platformarm64参数因为极空间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_DATABASEgitea MYSQL_USERgitea MYSQL_PASSWORDyour_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_UID1000 USER_GID1000命令参数/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记得在路由器上做好端口转发这样在外网也能访问你的私有代码仓库了。不过要注意安全防护建议配合防火墙规则和定期更新。