下面是你这次实际验证成功的:
Ubuntu / 阿里云 / Snap → 官方二进制版
完整迁移方案。
一、恢复 Snap 数据(非常关键)
你之前:
sudo snap remove gitea
后:
/var/snap/gitea
没了。
但 Snap 自动快照还在。
查看:
snap saved
看到:
Set 1 gitea ...
恢复:
sudo snap restore 1
恢复后:
/var/snap/gitea/common
重新出现。
二、最重要的数据位置
1. Git 仓库(真正核心)
/var/snap/gitea/common/data/gitea-repositories
例如:
/var/snap/gitea/common/data/gitea-repositories/admin/HG_pc.git
这里才是真正代码。
2. 数据库
/var/snap/gitea/common/data/gitea.db
保存:
-
用户
-
仓库信息
-
Issue
-
Token
-
Release
-
Wiki
-
设置
3. 配置文件
/var/snap/gitea/common/conf/app.ini
包含:
-
SECRET_KEY
-
JWT_SECRET
-
INTERNAL_TOKEN
建议保留。
三、先备份(强烈推荐)
仓库备份
sudo tar czvf ~/gitea_repositories_backup.tar.gz \
/var/snap/gitea/common/data/gitea-repositories
完整备份
sudo tar czvf ~/gitea_full_backup.tar.gz \
/var/snap/gitea/common/data/gitea-repositories \
/var/snap/gitea/common/data/gitea.db \
/var/snap/gitea/common/conf
四、安装官方二进制版
gitea-1.26.1-linux-amd64.xz
解压
xz -d gitea-1.26.1-linux-amd64.xz
mv gitea-1.26.1-linux-amd64 gitea
chmod +x gitea
安装
sudo mv gitea /usr/local/bin/
验证:
gitea --version
五、创建 git 用户
sudo adduser \
--system \
--shell /bin/bash \
--group \
--disabled-password \
--home /home/git \
git
六、创建目录
sudo mkdir -p /var/lib/gitea/{custom,data,log}
sudo mkdir -p /var/lib/gitea/data/git/repositories
sudo mkdir -p /etc/gitea
七、迁移数据
1. 复制仓库
sudo cp -r \
/var/snap/gitea/common/data/gitea-repositories/* \
/var/lib/gitea/data/git/repositories/
2. 复制数据库
sudo cp \
/var/snap/gitea/common/data/gitea.db \
/var/lib/gitea/data/
3. 复制 app.ini
sudo cp \
/var/snap/gitea/common/conf/app.ini \
/etc/gitea/
八、修改 app.ini(关键)
编辑:
sudo nano /etc/gitea/app.ini
重点修改:
改运行用户
RUN_USER = git
不要 root。
改工作目录
WORK_PATH = /var/lib/gitea
改仓库目录
原来:
ROOT = /var/snap/gitea/common/data/gitea-repositories
改:
ROOT = /var/lib/gitea/data/git/repositories
改 APP_DATA_PATH
原来:
APP_DATA_PATH = /var/snap/gitea/common/data
改:
APP_DATA_PATH = /var/lib/gitea/data
改 LFS
PATH = /var/lib/gitea/data/lfs
改日志目录
ROOT_PATH = /var/lib/gitea/log
保留以下不要变
INTERNAL_TOKEN
JWT_SECRET
LFS_JWT_SECRET
九、修复权限(非常重要)
sudo chown -R git:git /var/lib/gitea
sudo chown -R git:git /etc/gitea
十、创建 systemd 服务
创建:
sudo nano /etc/systemd/system/gitea.service
内容:
[Unit]
Description=Gitea
After=network.target
[Service]
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
RestartSec=2s
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
CapabilityBoundingSet=
PrivateTmp=true
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
十一、启动 Gitea
刷新:
sudo systemctl daemon-reload
开机启动:
sudo systemctl enable gitea
启动:
sudo systemctl start gitea
十二、查看状态
sudo systemctl status gitea --no-pager -l
日志:
journalctl -u gitea -f
十三、浏览器访问
http://你的IP:3000
十四、Git Push 认证失败解决
因为迁移后:
Windows 还缓存旧密码
删除 Windows 凭据:
控制面板
→ 凭据管理器
→ Windows 凭据
删除:原来域名对应的凭据
推荐使用 Token
Gitea:
头像
→ Settings
→ Applications
→ Generate Token
权限:
repository → 读写
十五、Gitea 密码位置
保存在:
gitea.db
的:
user
表中。
是:
PBKDF2 哈希
不是明文。
重置密码
sudo -u git gitea admin user change-password \
--config /etc/gitea/app.ini \
--username admin \
--password 新密码
十六、最终推荐
以后:
不要再用 Snap 版 Gitea
推荐:
官方二进制 + systemd
优点:
-
更稳定
-
路径清晰
-
数据容易备份
-
不会被 Snap 自动机制干扰
-
更适合生产环境。