Versun

对待生命,不妨大胆一点,因为我们终将失去它



2024-05-04 14:31:59 UTC

2024-05-04

刚看完电影《铃芽之旅》,故事讲得很好,点到为止,不煽情不做作,很好看。
真羡慕这种想象力和叙事技巧


2024-05-04 08:31:42 UTC

2024-05-04

realpython的内容是真不错,但一个月300多的价格下不了手啊……


2024-05-02 22:57:28 UTC

2024-05-03

期待Neato


2024-05-02 11:56:16 UTC

2024-05-02

每次在看大自然纪录片,比如《地球》时,恨不得游遍整个地球!
然后今天游个良渚村,就累的不行…………


2024-04-30 07:03:46 UTC

2024-04-30

Ghost即将支持ActivityPub了,再加上最近很火的EchoFeed,感觉ActivityPub要火了


2024-04-30 05:07:45 UTC

2024-04-30

TIL: 所有的代码都被包裹在一个主函数中,然后在文件底部调用该函数,这样可以避免执行下载不完整的脚本的风险
tailscale.com/install.s…


2024-04-29 21:54:07 UTC

2024-04-30

2024-04-29 08:53:40 UTC

2024-04-29

刚发现,专门做开发人员学习路线图的Roadmaps,添加了好多内容,
特别是每个节点都有推荐的学习资料,还有个AI定制学习路线,简直不要太方便了

2024-04-29-08-53-40-utc-26c8651b.png 155 KB
2024-04-29-08-53-40-utc-a9294888.png 29.5 KB


我的Home Server迁移记录

2024-04-27

本篇文章记录了我的Home server从原先的 Debian + Yunohost 迁移到 Ubuntu + Dockge的过程
迁移理由:

  1. 为了装更多应用压榨VPS的8G内存
  2. 使用docker方便调试和开发
  3. Yunohost很多应用的更新没法及时跟上
  4. Caddy在Debian下有很多小问题,Ubuntu就能一键启用,很奇怪

备份已有应用的数据

好在所有的应用都提供了导出数据功能,所以很快就完成了备份

初始化系统

  1. 将系统重装为Ubuntu 22.04后,升级重启。
  2. 安装必需软件:apt install vim sudo curl uidmap fail2ban -y
  3. 启用fail2ban:systemctl enable fail2ban
  4. 创建非root用户:adduser versun
  5. 将versun用户加入sudo:visudo
  6. 配置sshd:vim /etc/ssh/sshd_config 禁止root登陆和密码登陆
    PasswordAuthentication no
    PermitRootLogin no
  7. 重启sshd服务:sudo systemctl restart sshd
  8. 给versun用户添加ssh public key
su versun
mkdir ~/.ssh
echo "Your ssh public key" > ~/.ssh/authorized_keys

sudo chmod 600 ~/.ssh/authorized_keys
  1. 新建一个终端使用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应用,基本步骤如下:

  1. 修改应用的docker compose内容中的port为只监听本地
  2. 修改caddyfile配置文件,添加服务端口
  3. 重启caddy
  4. 配置DNS记录

注意:如果有需要映射文件夹的,需要确保映射到当前路径:./,这样才能确保所有数据都在/opt/stacks里面。

定时备份docker数据

我使用backblaze的b2服务。

  1. 下载官方的b2程序
  2. 执行命令:

    chmod a+x b2-linux
    sudo mv b2-linux /usr/bin/b2
  3. 在backblaze上创建私有存储桶和新的[应用密钥]
    (https://secure.backblaze.com/app_keys.htm)
  4. 使用root完成认证: sudo b2 authorize-account
  5. 首次上传:sudo b2 sync /opt/stacks/ b2://Your-Bucket-Name/
  6. 创建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来做认证


2024-04-26 10:03:25 UTC

2024-04-26

CommaFeed的移动端界面比Miniflux好用很多

2024-04-26-10-03-25-utc-b6b027ac.jpeg 461 KB