Github仓库地址: ovrclk/akash-on-rails
Demo: pin.akash.host
这是一个托管在Akash上的Pinterest的Rails应用克隆, 充分利用了去中心化云主机的一些特性:
通过 Filebase将数据库备份/恢复到 Sia通过 Filebase上传用户图像到 SiaAuth0做用户验证Cloudflare 处理DNS 和 SSL.定时任务处理使用 Whenever.
架构
App 容器
运行Rails服务器辟谷托管实际网站连接到Postgres容器实现数据库保存将文件保存到Filebase, (当前支持Sia, Skynet, 和 Storj).使用Auth0 处理用户登录和限制.
Cron 容器
启动时自动恢复Postgres数据库,通过重新部署实现数据库持久化每隔15分钟自动将数据库备份到 Filebase在 schedule.rb中使用 Whenever来定义Crontab运行和Rails应用同样的docker镜像, 使用 cron 代替 rails服务器一个 独立数据库备份/恢复容器 同时可用.
Postgres数据库容器
运行标准Postgres服务器的docker镜像
使用
最终这个代码库旨在提供一个在Akash上托管rails应用程序的合理示例。有几种方法可以使用它:
在Akash上运行应用就像是在使用你自己的本地存储和验证账户Auth0
设置一个免费的Cloudflare 帐户, 并加上你的域名和设置nameservers安装 Filebase 帐户和bucket.在你的bucket增加一个 backups 文件夹后面需要用到bucket名称, client ID以及secret注册一个 Auth0 帐户并设置一个应用回调URL: https://yourdomain.com/auth/auth0/callback.登出URL: https://yourdomain.com.需要你的 Auth0 域名, client ID, 以及secret.使用样例deploy.yml文件, 用 Filebase and Auth0中的值来填充环境变量在Akash上部署并获得你的应用的URL链接在 Cloudflare中使用 CNAME , 将域名指向你的应用URL链接在 Cloudflare中使用Full SSL 模式使用 Auth0登陆到你的网站. 第一个创建的用户默认为管理员.
在你的项目中使用相关的相关文件
Dockerfile开箱即用的Rails Dockerfile.安装AWS CLI 工具以便和 Filebase交互scripts/run-app.sh预编译rails assets.运行rails 服务器.scripts/run-scheduler.sh创建和恢复数据库运行 rake db:migrate and db:seed.使用 Whenever 配置crontab以便运行cron 服务.scripts/restore-postgres.sh从 Filebase下载最新备份如果备份被发现则恢复该数据库scripts/backup-postgres.sh将数据库备份到 Filebase.如果日期比 KEEP_BACKUPS旧则删掉备份config/schedule.rbWhenever cron 调度任务每15分钟运行一次 scripts/backup-postgres.sh 脚本config/initializers/shrine.rb配合 Shrine 设置应用, 可以将 Filebase 设置为S3兼容deploy.ymlAkash 部署清单文件.
克隆这份代码库作为你的新项目的脚手架
将这个代码clone到你自己的github帐户将任何含有AkashOnRails, akash-on-rails and, akash_on_rails的名称重命名为你自己应用的名字根据需要修改app/models, app/controllers, app/views
开发
你可以在本地使用 Docker compose来运行这个应用
拷贝 .env.sample 文件到 .env 并让其生效.
运行 docker-compose up 开始构建和运行应用程序.
Akash相关链接
中文链接
微博:https://weibo.com/akashchina币乎:https://bihu.com/people/1117023356币吧:https://akt.bihu.com/推特:https://twitter.com/AkashCommunityQQ群:http://t.cn/A6IayTx5群号:754793800语雀:https://www.yuque.com/akashnetwork/indexakash官网:https://akash.network/?lang=zh-hans
英文链接:
Twitter:https://twitter.com/akashnet_Facebook:https://www.facebook.com/akashnw/LinkedIn:https://www.linkedin.com/company/akash-network/Telegram:https://t.me/AkashNWGithub:https://github.com/ovrclk
扫码关注Akash