Coolify系列01- 从0到1超详细手把手教你上手Heroku 和 Netlify 的开源替代方案

news2025/1/17 13:59:47

什么是Coolify

  • 一款超强大的开源自托管 Heroku / Netlify 替代方案
  • coolLabs是开源、自托管和以隐私为中心的应用程序和服务的统称

为什么使用Coolify

  • 只需单击几下即可托管你的应用、数据库或其他开源服务,等。
  • 它是 Heroku 和 Netlify 的一个替代方案。
  • 通过 Coolify 可以部署很多应用、数据库、服务,例如:Static、NodeJS、Svelte、React、Vue、Next、Nuxt、Astro、PHP、Rust 等,可以使用自动反向代理和免费 SSL 证书轻松部署应用程序!
  • 一键安装 MongoDB、MySQL、PostgreSQL、CouchDB、RedisDB 实例
  • 一键安装 WordPress、Ghost Plausible Analytics、NocoDB、BitWarden/VaultWarden、LanguageTool、N8n、VSCode Server 等服务
  • 一键将服务部署在任何地方,本地 Docker 引擎、远程 Docker 引擎 (WIP) 或 Kubernetes (WIP)。
  • 使用管理系统轻松管理团队。每个团队由一个名称空间分隔,您可以创建任意数量的团队。
  • 一键升级您的一体化IaaS平台!

如何使用Coolify

Coolify由以下几部分组成:

  • User Interface
  • API
  • HTTP/TCP Proxy
  • TCP Proxies for databases.
  • SSL certificates are handled by Let’s Encrypt.

各部分详细介绍

User Interface

你可以使用Ul来配置你的实例和所有资源,查看它们的状态,使用情况等。它是一个基于SvelteKit的静态SPA站点。

API

  • Coolify的后端部分,用于与远程资源、数据库、Docker引擎等进行通信。
  • 它是基于Fastify的后端服务。Fastify is Fast and low overhead web framework, for Node.js

HTTP/TCP Proxy

Coolify动态配置Traefik实例以生成反向代理配置,生成SSL证书并将所有传入流量路由到正确的容器。

TCP Proxies for databases.

使用Coolify部署的数据库可以通过互联网访问。为此,Coolify启动一个单独的Traefik实例,以配置和代理来自internet的TCP连接。

为什么需要一个单独的代理?

  • 您可以启动服务器所能处理的任意数量的数据库,因此,例如将100个端口绑定到单个进程可能是CPU密集型任务,如果您只想使用其中的10个端口,则没有意义。
  • 使用这种方法,您可以一个接一个地动态绑定主机服务器上的端口。

那么10个数据库将创建10个Traefik实例?#

是的。Traefik是在某种程度上,它只使用~10MB的内存

SSL certificates are handled by Let’s Encrypt.

  • 如果您定义了以https开头的URL, Coolify将为您的资源生成SSL证书。
  • Coolify使用Let’s Encrypt助手来请求、生成和存储SSL证书。

www vs non-www

  • 证书仅为已定义的URL生成。如果你指定了一个非www的URL,只有非www的URL才会有证书。你无法到达www网址。
  • 通常,你需要在DNS层将www重定向到非www。
  • 如果您想为两者生成SSL证书,有一个选项称为Generate SSL for www and non-www?用于应用程序和服务。

TCP数据库代理 HTTP/TCP Proxy

TCP数据库代理 HTTP/TCP Proxy

支持架构

支持AMD64和ARM架构。

支持的操作系统

由于安装脚本的缘故,支持基于Debian的服务器(Coolify本身支持所有可以运行Docker引擎的操作系统)。如果你想要其他的,请考虑在Coolify 的 GitHub 上开放一个问题。

配置要求,Coolify所需的最低资源:

  • 2 cpu
  • 2gb内存
  • 30+ GB的存储空间。

起步

在运行安装脚本之前,请确保您的服务器已经安装了以下包:

  • Sudo
  • wget
  • curl

检测以及安装 以上三个命令的方法

检测是否一经安装了SUDO,如果没有安装,下载软件包进行安装
rpm -q sudo

确定wget是否存在
rpm -qa | grep "wget"
安装 wget
yum -y install wget
验证是否已经安装curl
curl



安装命令

有安装提示

wget -q https://get.coollabs.io/coolify/install.sh \
-O install.sh; sudo bash ./install.sh

最简单的方式就是直接执行下面的命令即可一键安装

wget -q https://get.coollabs.io/coolify/install.sh \
-O install.sh; sudo bash ./install.sh -f

Opt-out from telemetry (count installed instances on the landing page)

wget -q https://get.coollabs.io/coolify/install.sh \
-O install.sh; sudo bash ./install.sh -n

如果想手动安装

  • 需要在.env文件中设置所需的环境变量(见下文)
  • 需要在服务器上安装Docker引擎v20.10+。
  • 配置完成后可以使用 Docker 进行一键启动
COOLIFY_APP_ID=   # 一个随机的 UUID,用于区分已安装的实例。
COOLIFY_SECRET_KEY=  # 用于加密各种私人数据,长度必须为 32 个字符。
COOLIFY_DATABASE_URL=file:../db/prod.db  # SQLite 数据库 URL,必须在 ../db 下。
COOLIFY_SENTRY_DSN=https://9e7a74326f29422584d2d0bebdc8b7d3@o1082494.ingest.sentry.io/6091062  # Sentry 错误报告的 DSN 地址,不是强制性的。
COOLIFY_IS_ON=docker  # Coolify 部署的位置,目前,仅支持 docker。
COOLIFY_WHITE_LABELED=false  # 会删除 Coolify 实例的“商标”。
COOLIFY_WHITE_LABELED_ICON=  # 登录/注册页面上要替换的图标。
COOLIFY_AUTO_UPDATE=false  # 它会在后台自动更新你的 Coolify 实例。

docker run -tid --env-file .env -v /var/run/docker.sock:/var/run/docker.sock -v coolify-db-sqlite coollabsio/coolify:latest /bin/sh -c "env | grep COOLIFY > .env && docker compose up -d --force-recreate"

一键安装体验

遇到问题,wget 下载文件出错,没有反应,下载下来的文件是空的,但是下载其他是正常

测试命令正常
wget -c https://download.redis.io/releases/redis-6.0.8.tar.gz
使用这个命令以后下载没有反应
wget -q https://get.coollabs.io/coolify/install.sh -O install.sh; sudo bash ./install.sh -f
生成了文件install.sh,但是vi 它,是空的

问题解决-建立链接时需要在命令行中添加–no-check-certificate

wget -q https://get.coollabs.io/coolify/install.sh --no-check-certificate -O install.sh; sudo bash ./install.sh -f

成功下载,开始安装

又卡住了,拉镜像好慢好慢,卡了十分钟了

尝试更换docker 源

Docker Hub 提供众多镜像,你可以从中自由下载数十万计的免费应用镜像, 这些镜像作为 docker 生态圈的基石,是我们使用和学习 docker 不可或缺的资源。为了解决国内用户使用 Docker Hub 时遇到的稳定性及速度问题,我们需要搞一个加速器,下面介绍我用的三种镜像地址:

打开daemon.json配置文件
vi /etc/docker/daemon.json
添加如下配置
 "registry-mirrors": ["https://registry.docker-cn.com"]
重启docker
service docker restart  

继续执行指令

sudo bash ./install.sh -f

修改了配置文件

{
 "registry-mirrors": ["https://registry.docker-cn.com"]
}


方案一:阿里云:搜索容器服务-镜像加速器

卡太久了,我决定手动拉

配置镜像加速器

针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

先粘贴这一段
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://3iew7cd2.mirror.aliyuncs.com"]
}
EOF
再执行下面的
sudo systemctl daemon-reload
sudo systemctl restart docker

方案二:DaoCloud 道客加速器

配置 Docker 镜像站,该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。更多详情请访问文档。

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

方案三:腾讯加速器

https://mirror.ccs.tencentyun.com

docker 下载测速

测试命令:

time docker pull httpd


今天就写到这里啦~

  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/178219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springbootWeb常用注解使用

springbootWeb常用注解使用PathVariable 路径变量注解RequestHeader 请求标头注解RequestParam 请求域注解RequestBody 请求体注解ModelAttribute使用1,将其置于方法上&#xff1a;使用2&#xff0c;将其置于方法参数上&#xff1a;CookieValuePathVariable 路径变量注解 可以…

3.4动态规划--最大字段和

要好好学习这个难受难受超级难受的动态规划了&#xff0c;千万不要再沉迷在看剧和玩耍里面了。必须承认最近没有好好学习。 写在前面 最大字段和书上介绍了三种解法&#xff1a;暴力、递归分治、动态规划 递归分治&#xff0c;一分为二&#xff0c;合并的时候有三种情况&…

java容器轻松理解 collection collections(异同篇)

(1)collectionset &#xff08;只能迭代&#xff0c;不可以按下标取值&#xff09;hashset、Treesetlist&#xff08;可以迭代&#xff0c;也可以按下标取值&#xff09;ArrayList、LinkedList、Vector特点&#xff1a;ArrayList:方便随机访问&#xff0c;由数组实现的。所以中…

十大经典排序算法(动态演示+代码)-选择排序与插入排序

选择排序 一、什么是选择排序&#xff1f; 选择排序&#xff08;Selection sort&#xff09;是一种简单直观的排序算法。它的工作原理是&#xff1a;第一次从待排序的中数据元素选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c…

行为型模式-策略模式

1.概述 先看下面的图片&#xff0c;我们去旅游选择出行模式有很多种&#xff0c;可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿&#xff0c;开发需要选择一款开发工具&#xff0c;当然可以进行代码开发的工具有很多&#xff0c;可以选择Idea进行开发&a…

04_iic子系统

总结 iic_client和iic_driver 加入iic总线的思想和paltform总线的玩法一样 把iic设备和驱动注册到iic总线中 构造出字符设备驱动和设备节点供app进行操作 但是iic硬件设备是挂在iic控制器下面的 所以iic控制器也会有自己的驱动和设备树节点 厂家一般都会帮做好 我们写的iic_dr…

离散系统的数字PID控制仿真-2

设计离散PID控制器&#xff0c;各信号的跟踪结果如图所示&#xff0c;其中S代表输入指令信号的类型。通过取余指令 mod实现三角波和锯齿波。当S1时为三角波&#xff0c;S2时为锯齿波&#xff0c;S3时为随机信号。在仿真过程中&#xff0c;如果 D1&#xff0c;则通过 pause命令实…

Prometheus学习整理-Prometheus-operator

Prometheus中的promQL语句: Prometheus提供的一种promQL语法,用来处理接口数据,然后方便用户对数据进行处理加工,它是Prometheus专门提供的一个函数表达式语言,可以实时的查询和聚合时间序列的数据,通过HTTPApi的方式提供给外部使用,PromQL主要分为下面的几种类型数据: 这里面的…

【老卫搞机】136期:华为开发者联盟社区2022年度战码先锋2期开源贡献之星

首先祝大家兔年大吉&#xff0c;身体安康&#xff0c;钱兔似锦&#xff01;接上次的“2022年牛人之星”&#xff08; https://developer.huawei.com/consumer/cn/forum/topic/0203109930647268095&#xff09;&#xff0c;今天咱们来开箱另外一件特殊的奖品&#xff0c;来自华为…

MySQL内外连接

文章目录MySQL内外连接内连接外连接左外连接右外连接简单案例MySQL内外连接 表的连接分为内连接和外连接。 内连接 内连接 内连接的SQL如下&#xff1a; SELECT ... FROM t1 INNER JOIN t2 ON 连接条件 [INNER JOIN t3 ON 连接条件] ... AND 其他条件;说明一下&#xff1a; …

零基础学JavaWeb开发(二十三)之 springmvc入门到精通(3)

5、springspringmvcmybatis整合 5.1、项目技术需求分析 1.使用ssmlayui技术开发 对用户表数据实现增删改查 采用前后端分离架构模式 5.2、SSM环境的整合之提供增删改查 整合数据库表结构 CREATE TABLE mayikt_users (id int NOT NULL AUTO_INCREMENT,name varchar(255) CH…

Mysql入门技能树-使用数据库

创建和删除数据库 Joe 在开发机上创建了一个名为 goods 的数据库&#xff0c;做了一些练习&#xff0c;现在他需要删除这个数据库&#xff0c;重建一个 goods。那么他需要的步骤是&#xff1a; 答案是&#xff1a;A 创建数据库的语法格式如下&#xff1a; CREATE DATABASE d…

client-go实战之九:手写一个kubernetes的controller

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 系列文章链接 client-go实战之一&#xff1a;准备工作client-go实战之二:RESTClientclient-go实战之三&#xff1a;Clientsetclient-go实战之四&#xff1a;…

Java IO流之字符集总结

ASCII字符集、GBK字符集、Unicode字符集 这里我直接上总结了&#xff0c;关于这三种字符集的基本介绍大家可以百度一下。 在计算机中&#xff0c;任意数据都是以二进制的形式来存储的计算机中最小的存储单元是一个字节ASCII字符集中&#xff0c;一个英文占一个字节简体中文版Wi…

CQF量化金融职业指南

✏️写作&#xff1a;个人博客&#xff0c;InfoQ&#xff0c;掘金&#xff0c;知乎&#xff0c;CSDN &#x1f4e7;公众号&#xff1a;进击的Matrix &#x1f6ab;特别声明&#xff1a;原创不易&#xff0c;未经授权不得转载或抄袭&#xff0c;如需转载可联系小编授权。 概述 …

二分查找算法的实现以及解决整数溢出问题

前言 从今天起我会开启一个专栏&#xff1a;Java面试八股文,记录一下我在网上学到的Java面试常考的一些内容&#xff0c;注意:本人暂无面试经验&#xff0c;只是在网上找视频学习到的❗❗❗ 二分查找 我们首先要学习的是二分查找&#xff0c;我相信很多人跟我一样&#xff0c;在…

MySQL - text字段

一、text属性 MySQL下的TEXT属性一种特殊的字符串&#xff0c;存储单位为字节&#xff0c;有四种类型 TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT 不同的是可以存储的字符串的长度以及空间占用大小 TINYTEXT最大存放长度为255个字符的字符串 TEXT最大存放长度为65535个字符的…

XlsReadWriteII EXCEL Cell 单元数据读写

XlsReadWriteII EXCEL Cell 单元数据读写 下面从编程的眼光&#xff0c;从XlsReadWriteII的角度&#xff0c;谈谈EXCEL的理解。回顾一下EXCEL发展史&#xff1a; 1982年&#xff1a;微软推出了它的第一款电子表格软件&#xff1a;Multiplan。 1985年&#xff1a;推出了…

Day06 C++STL入门基础知识三——String容器(下)比较-存取-插入-删除-子串获取【全面深度剖析+例题代码展示】

永远相信&#xff0c;美好的事情即将发生&#xff01; 文章目录1. 比较操作1.1 比较方式1.2 函数原型1.3 代码展示2. 字符读写2.1 字符读入/访问2.1.1 方式2.1.2 代码展示2.2 修改字符2.2.1 方式2.2.2 代码展示3. 插入和删除3.1 函数原型3.2 代码展示4. 截取子串(比较实用!!!)4…

蓝桥杯STM32G431RBT6学习——定时器输入捕获

蓝桥杯STM32G431RBT6学习——定时器输入捕获 前言 从省赛的题目来看&#xff0c;对于定时器输入捕获这块几乎不考&#xff0c;但是为了知识的完整性及避免万一&#xff0c;依旧有了解的必要。国信长天开发板上的定时器捕获主要针对于NE555波形发生器的方波进行频率、脉宽等测…