本篇文章记录了我的Home server从原先的 Debian + Yunohost 迁移到 Ubuntu + Dockge的过程
迁移理由:
- 为了装更多应用压榨VPS的8G内存
- 使用docker方便调试和开发
- Yunohost很多应用的更新没法及时跟上
- Caddy在Debian下有很多小问题,Ubuntu就能一键启用,很奇怪
备份已有应用的数据
好在所有的应用都提供了导出数据功能,所以很快就完成了备份
初始化系统
- 将系统重装为Ubuntu 22.04后,升级重启。
- 安装必需软件:
apt install vim sudo curl uidmap fail2ban -y
- 启用fail2ban:
systemctl enable fail2ban
- 创建非root用户:
adduser versun
- 将versun用户加入sudo:
visudo
- 配置sshd:
vim /etc/ssh/sshd_config
禁止root登陆和密码登陆PasswordAuthentication no PermitRootLogin no
- 重启sshd服务:
sudo systemctl restart sshd
- 给versun用户添加ssh public key
su versun
mkdir ~/.ssh
echo "Your ssh public key" > ~/.ssh/authorized_keys
sudo chmod 600 ~/.ssh/authorized_keys
- 新建一个终端使用versun账户和密钥确保能登陆成功。
安装Docker
根据官方文档安装即可
将versun账户添加到 docker 组,以便以非root用户身份运行 Docker 命令:sudo usermod -aG docker versun
重启或者重新登陆versun账户
安装Caddy
同样,根据官方文档安装即可
安装Dockge
官方安装步骤如下:
#Create directories that store your stacks and stores Dockge's stack
mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
#Download the compose.yaml
curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml
在下载完compose.yaml后,我们需要修改端口,将- 5001:5001
改为- 127.0.0.1:5001:5001
因为我使用caddy来代理服务,所以就限制它只能通过本地访问,而不是暴露到外网。
然后启动服务:docker compose up -d
配置Caddyfile
修改/etc/caddy/Caddyfile,内容参考如下
{
log {
output file /var/log/caddy/versun.log
}
}
dockge.example.com {
reverse_proxy localhost:5001
}
blog.example.com {
reverse_proxy localhost:8001
}
个人比较喜欢使用subdomain的形式,但每个subdomain都要在域名服务商那添加,你也可以使用子路径形式,更方便:
versun.me {
reverse_proxy /dockge/* localhost:5001
reverse_proxy /blog/* localhost:8001
}
修改完后,格式化下文件:sudo caddy fmt /etc/caddy/Caddyfile --overwrite
然后重载配置:sudo systemctl reload caddy
配置Cloudflare的DNS记录
强烈建议使用Cloudflare来管理DNS记录,不仅有免费CDN,还有免费的代理防止服务器IP泄漏,还有防基础的DDOS。
添加A记录到你的服务器IP,并开启Proxy
然后在左侧面板,选择SSL/TLS
,将加密模式设置为完全(Full)
过1分钟左右,通过域名应该就能访问到你的服务了。
安装应用
之后就是在Dockage上安装Docker应用,基本步骤如下:
- 修改应用的docker compose内容中的port为只监听本地
- 修改caddyfile配置文件,添加服务端口
- 重启caddy
- 配置DNS记录
注意:如果有需要映射文件夹的,需要确保映射到当前路径:./
,这样才能确保所有数据都在/opt/stacks
里面。
定时备份docker数据
我使用backblaze的b2服务。
- 下载官方的b2程序
-
执行命令:
chmod a+x b2-linux sudo mv b2-linux /usr/bin/b2
- 在backblaze上创建私有存储桶和新的[应用密钥]
(https://secure.backblaze.com/app_keys.htm) - 使用root完成认证:
sudo b2 authorize-account
- 首次上传:
sudo b2 sync /opt/stacks/ b2://Your-Bucket-Name/
-
创建cron定时任务:
sudo crontab -e
# 每周一的3点上传一次,以本地版本为准,旧版本保留30天, 0 3 * * 1 /usr/bin/b2 sync --keep-days 30 --replace-newer /opt/stacks/ b2://Your-Bucket-Name/ >> /var/log/b2sync.log 2>&1
完成
其它
你也可以安装一个Homepage,方便汇总所有的服务,挑一个吧:Homepage, Dashy, Homer, Homarr
如果没有自带认证的,可以使用caddy来做认证
发表回复