[{"data":1,"prerenderedAt":628},["ShallowReactive",2],{"project-44292103":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":47,"post_text":48,"what":49,"said":105,"maker_in_thread":236,"shape":249,"grid":254,"attempts":590,"same_week":591,"maker_shows":34,"maker_hidden":620,"reader_version":621,"card":622},"44292103","Canine","A Heroku alternative built on Kubernetes","title","Show HN: Canine – A Heroku alternative built on Kubernetes","https:\u002F\u002Fgithub.com\u002Fczhu12\u002Fcanine","github.com","czhu12",1750098479,2025,320,123,157,3837,5,"legend","infrastructure","self-hosted paas","web_app",[24,25,26,27,28],"heroku alternative","kubernetes","self-hosted","hetzner","helm charts","curious",0.026,{"positive":32,"neutral":33,"mixed":34,"critical":35},13,28,2,11,54,{"docs":38,"idea":40,"execution":41,"pricing":43,"design":45},{"positive":39,"critical":34},4,{"positive":34,"critical":18},{"positive":42,"critical":34},0,{"positive":44,"critical":42},3,{"positive":46,"critical":34},1,[18,44,18,42,42,42,42,46,46,44,18,42,42,42,42,42,44,46,44,46,34,44,18,46,18,46,34,44,44,44,34,39,44,18,44,44,39,18,46,44],"Hello HN!\n\nI've been working on Canine for about a year now. It started when I was sick of paying the overhead of using stuff like Heroku, Render, Fly, etc to host some web apps that I've built. At one point I was paying over $400 a month for hosting these in the cloud. Last year I moved all my stuff to Hetzner.\n\nFor a 4GB machine, the cost of various providers:\n\nHeroku = $260 Fly.io = $65 Render = $85 Hetzner = $4\n\n(This problem gets a lot worse when you need > 4GB)\n\nThe only downside of using Hetzner is that there isn’t a super straightforward way to do stuff like:\n\n- DNS management \u002F SSL ce",{"problem":50,"audience":56,"pricing":64,"motivation":68,"time_to_build":72,"stack":76,"openness":102,"stage":103,"team_size":104},{"value":51,"source":52,"evidence":53},"Heroku-style hosting costs too much compared with running apps on cheap VPS","maker",[54],{"id":55},"post",{"value":57,"source":58,"evidence":59},"developers hosting their own web apps on cheap servers or small clusters","inferred",[60,61],{"id":55},{"id":62,"by":11,"text":63},"44293657","Yeah, so the setup I have there is basically: for staging \u002F non prod apps, I typically just boot a single Hetzner VPS, and then install a K8 compliant server, then I'm off to the…",{"value":65,"source":52,"evidence":66},"Free open source; cloud hosted version at canine.sh, pricing not stated",[67],{"id":55},{"value":69,"source":52,"evidence":70},"Cut hosting costs from hundreds per month to a cheap Hetzner machine",[71],{"id":55},{"value":73,"source":52,"evidence":74},"about a year",[75],{"id":55},[77,88,92,98],{"value":78,"source":79,"evidence":80},"Ruby on Rails","commenter",[81,84],{"id":82,"by":11,"text":83},"44292347","Would also add -- this has been by far the funnest project I've ever built. Owning the \"tech stack\" from top to bottom is a super satisfying feeling. Rails app Canine infra…",{"id":85,"by":86,"text":87},"44293089","eviluncle","So nice to see modern open source being built with rails. it's the ultimate productivity framework",{"value":89,"source":52,"evidence":90},"Kubernetes",[91],{"id":55},{"value":93,"source":52,"evidence":94},"K3s",[95],{"id":96,"by":11,"text":97},"44293351","Main reason is that I wanted to be able to support single VPS K3s clusters all the way down to ~512MB. K3s already takes up about 100MB which only leaves 400 for the application,…",{"value":99,"source":52,"evidence":100},"Helm",[101],{"id":55},"open_source","launched","solo",{"praise":106,"objections":129,"requests":151,"questions":181,"alternatives":196},[107,114,118],{"value":108,"source":79,"evidence":109},"Wanted Heroku-like experience on own hardware",[110],{"id":111,"by":112,"text":113},"44293359","TheTaytay","First of all, I'm often looking for a better \"Heroku-esque\" experience on my own metal, so thank you! This looks neat! Also, your docs on how K8s works look really good, and…",{"value":115,"source":79,"evidence":116},"Good docs on Kubernetes basics",[117],{"id":111,"by":112,"text":113},{"value":119,"source":79,"evidence":120},"Cost savings versus PaaS pricing",[121,125],{"id":122,"by":123,"text":124},"44293009","Everhusk","I've also always wondered why computing costs keep going down but cloud costs keep going up. You deserve an award for building this, thank you.",{"id":126,"by":127,"text":128},"44293813","bravesoul2","Brilliant if an entire industry becomes a commodity complement because some angry dev got fed up of paying $400. Love it!",[130,137,144],{"value":131,"source":79,"evidence":132},"Not a true Heroku alternative if users must understand Kubernetes",[133],{"id":134,"by":135,"text":136},"44300587","serial_dev","A Heroku alternative built on Kubernetes!? If I need to know what Kubernetes is, Helm charts and whatnot, it's not really a Heroku alternative for me. I understand for some,…",{"value":138,"source":79,"evidence":139},"Single VM setup is not production-grade",[140],{"id":141,"by":142,"text":143},"44293921","matus_congrady","At https:\u002F\u002Fstacktape.com, we're also in the same space. We're offering Heroku-like experience on top of your own AWS account. I like what you're doing. But, to behonst, it's a…",{"value":145,"source":79,"evidence":146},"Landing page does not answer git push or Procfile questions",[147],{"id":148,"by":149,"text":150},"44293666","znpy","I used heroku manh years ago and i have fond memories of it. I think the landing page fails at answering the two most basic questions: 1. Can i deploy via a stupid simple “git…",[152,160,167,174],{"value":153,"source":79,"evidence":154},"Support adding nodes to Hetzner install",[155,159],{"id":156,"by":157,"text":158},"44296519","varun_chopra","I think you do need to support being able to add more nodes to the Hetzner install. Then it'd be perfect.",{"id":111,"by":112,"text":113},{"value":161,"source":79,"evidence":162},"Review apps for ephemeral PR environments",[163],{"id":164,"by":165,"text":166},"44294689","lotyrin","Any support (or timeline for support) for what heroku calls \"review apps\" (PRs automatically become ephemeral staged environment)? Skimming the docs and repo I didn't see any.",{"value":168,"source":79,"evidence":169},"Drag-and-drop deploys without GitHub",[170],{"id":171,"by":172,"text":173},"44293796","reassess_blind","Is there an option to just drag drop project files, instead of using GitHub? That’s how I prefer to test these out.",{"value":175,"source":79,"evidence":176},"Clearer docs on single-machine setup",[177],{"id":178,"by":179,"text":180},"44293641","indigodaddy","The video example is a little confusing from a \"I just want to self host the whole thing on a single machine\u002FVM etc\" perspective. If that's what I want to do, do I still have to…",[182,189],{"value":183,"source":79,"evidence":184},"How are storage and secrets handled",[185],{"id":186,"by":187,"text":188},"44292673","rcarmo","I’m curious as to how storage and secrets are handled, since my recurring issue with Kubernetes is not deploying the containers or monitoring them but having a sane way to ensure…",{"value":190,"source":79,"evidence":191},"Can it upgrade helm charts safely",[192],{"id":193,"by":194,"text":195},"44293041","film42","Looks great! I'm definitely in the market for something like this; and building on top of helm charts makes me want to try it out. Can Canine automatically upgrade my helm…",[197,208,215,222,229],{"value":198,"source":79,"evidence":199},"Coolify",[200,204],{"id":201,"by":202,"text":203},"44293361","lloydjones","I started using Coolify a few months ago — Do you have a “pitch” as to how Canine is different or better? Good work either way!",{"id":205,"by":206,"text":207},"44301570","whitefang","I found Coolify that solved the similar problem.",{"value":209,"source":79,"evidence":210},"Kubero",[211],{"id":212,"by":213,"text":214},"44293620","tonyhart7","this is identical to https:\u002F\u002Fwww.kubero.dev\u002F the problem is that kubero, Idk they did not gain any traction. maybe most user want simple tools like coolify",{"value":216,"source":79,"evidence":217},"Dokku",[218],{"id":219,"by":220,"text":221},"44330336","chrisaiv","Are there any charts that can compare this to Dokku, the Open Source equivalent of Heroku?",{"value":223,"source":79,"evidence":224},"CapRover",[225],{"id":226,"by":227,"text":228},"44294712","konexis007","How does this compare with caprover or dokku?",{"value":230,"source":79,"evidence":231},"Kamal",[232],{"id":233,"by":234,"text":235},"44294744","bpiroman","Just use Kamal and deploy to a Hetzner instance",{"comments":237,"answered":238,"key":239},18,10,[240,243,246],{"id":241,"text":242},"44293741","Yeah so at the moment it kind of supports two options: 1. A single Hetzner VPS 2. An existing Kubernetes cluster. I usually use #1 for staging \u002F development apps, and then #2 for…",{"id":244,"text":245},"44293799","Haha, well there goes my attempt to be different from the other landing pages out there. I'll take another stab, but appreciate the feedback!",{"id":247,"text":248},"44292593","Ah yeah I've been looking for these to submit to. Thanks, I'll submit a PR!",{"commenters":250,"max_depth":251,"maker_replies":237,"first_comment_mins":252,"lifespan_hours":253},74,8,24,153,[255,257,259,261,265,269,271,274,277,280,283,286,289,292,295,297,299,302,305,306,309,312,315,317,321,324,326,329,333,336,338,340,345,348,351,353,356,358,360,362,365,367,370,372,375,377,379,382,384,387,389,392,396,398,401,404,405,407,409,412,414,417,420,423,425,426,428,430,434,436,438,441,445,447,449,451,454,457,461,466,469,474,478,482,483,485,488,490,492,497,501,503,507,508,510,514,516,518,520,522,524,527,529,531,534,536,540,542,544,548,551,554,559,561,565,569,573,576,579,581,583,585,588],[111,42,18,256,112,42],"project\u002Fpositive\u002Fdocs",[241,42,42,258,11,46],"maker\u002Fneutral\u002Fnone",[260,42,18,256,112,42],"44294703",[262,46,44,263,264,42],"44292978","project\u002Fmixed\u002Fdocs","nwienert",[266,46,42,267,268,42],"44293459","commenter\u002Fneutral\u002Fnone","chrisweekly",[244,46,42,270,11,46],"maker\u002Fneutral\u002Fdocs",[272,46,18,256,273,42],"44293905","1oooqooq",[275,46,18,256,276,42],"44299853","harrisreynolds",[278,46,44,279,264,42],"44301486","project\u002Fneutral\u002Fdocs",[281,46,42,282,276,42],"44302496","other\u002Fneutral\u002Fnone",[284,46,42,282,285,42],"44297595","dgellow",[287,46,42,282,288,42],"44297753","vbezhenar",[290,46,42,282,291,42],"44299639","horsawlarway",[293,46,42,282,294,42],"44299918","0xbadcafebee",[296,46,42,267,291,42],"44301046",[298,46,42,282,264,42],"44352278",[300,46,42,282,301,42],"44302494","conradfr",[303,34,42,282,304,42],"44292455","debarshri",[247,34,42,258,11,46],[307,34,42,282,308,42],"44295265","westurner",[310,34,42,282,311,42],"44295895","emilsedgh",[313,34,42,282,314,42],"44296436","kot-behemoth",[82,44,42,316,11,46],"project\u002Fpositive\u002Fnone",[318,39,46,319,320,42],"44293117","project\u002Fcritical\u002Fdocs","vanillax",[322,39,46,319,323,42],"44293481","cmckn",[325,39,42,258,11,46],"44293649",[327,39,42,282,328,42],"44294858","cchance",[330,18,44,331,332,42],"44292794","project\u002Fneutral\u002Fidea","conqrr",[334,18,42,282,335,42],"44293938","psviderski",[337,18,42,282,332,42],"44294044",[339,18,42,282,335,42],"44294106",[341,342,18,343,344,42],"44292881",6,"project\u002Fpositive\u002Fidea","stego-tech",[346,342,42,282,347,42],"44293079","cyberpunk",[349,342,42,282,350,42],"44293229","notnmeyer",[352,342,42,282,344,42],"44293440",[354,342,42,282,355,42],"44293979","esseph",[357,342,42,282,344,42],"44294294",[359,342,42,282,355,42],"44294317",[361,342,42,282,344,42],"44295322",[363,342,42,282,364,42],"44294606","nabeards",[366,342,42,282,320,42],"44293242",[368,342,42,282,369,42],"44293534","wesleychen",[371,342,42,282,320,42],"44294386",[373,342,42,282,374,42],"44293823","KomoD",[376,342,42,282,320,42],"44294389",[378,342,42,282,364,42],"44294599",[380,342,42,282,381,42],"44293569","xp84",[383,342,42,282,355,42],"44293967",[385,342,42,282,386,42],"44294127","hombre_fatal",[388,342,42,282,11,46],"44293329",[390,342,42,282,391,42],"44297758","jitl",[393,394,44,279,395,42],"44296722",7,"reconnecting",[134,251,46,397,135,42],"project\u002Fcritical\u002Fidea",[399,251,42,400,11,46],"44301124","maker\u002Fneutral\u002Fidea",[186,402,44,403,187,42],9,"project\u002Fneutral\u002Fexecution",[148,238,44,279,149,42],[141,35,44,406,142,42],"project\u002Fmixed\u002Fidea",[408,35,42,258,11,46],"44294328",[410,35,42,267,411,42],"44294623","hardwaresofton",[212,413,46,397,213,42],12,[415,413,42,267,416,42],"44295680","Terretta",[418,413,46,419,213,42],"44298474","project\u002Fcritical\u002Fexecution",[421,32,44,258,422,42],"44304503","mattfrommars",[178,424,44,279,179,42],14,[62,424,42,258,11,46],[427,424,44,279,179,42],"44293885",[429,424,42,282,179,42],"44310303",[431,432,18,343,433,42],"44294340",15,"JeffMcCune",[435,432,42,400,11,46],"44296091",[193,437,44,331,194,42],16,[439,437,42,440,11,46],"44293338","maker\u002Fneutral\u002Fexecution",[442,443,46,419,444,42],"44293927",17,"federicotdn",[446,443,42,440,11,46],"44294345",[448,443,44,403,444,42],"44296608",[122,237,18,450,123,42],"project\u002Fpositive\u002Fpricing",[452,453,18,450,123,42],"44293020",19,[455,453,42,456,11,46],"44293377","maker\u002Fneutral\u002Fpricing",[458,453,42,459,460,42],"44295819","other\u002Fneutral\u002Fpricing","bbkane",[462,463,46,464,465,42],"44292997",20,"project\u002Fcritical\u002Fdesign","serbuvlad",[467,463,46,464,468,42],"44295325","wkat4242",[470,471,44,472,473,42],"44300016",21,"project\u002Fneutral\u002Fnone","diamondfist25",[475,476,44,279,477,42],"44302781",22,"RamRodification",[479,480,44,472,481,42],"44295595",23,"dabbz",[164,252,44,331,165,42],[484,252,42,400,11,46],"44296095",[486,487,44,331,320,42],"44293100",25,[489,487,42,440,11,46],"44296103",[491,487,42,267,320,42],"44299366",[493,494,44,495,496,42],"44293028",26,"project\u002Fneutral\u002Fdesign","utf_8x",[498,494,42,499,500,42],"44293040","commenter\u002Fneutral\u002Fdesign","dboreham",[96,494,42,502,11,46],"maker\u002Fneutral\u002Fdesign",[504,505,44,331,506,42],"44299304",27,"nodesocket",[219,33,44,472,220,42],[233,509,46,397,234,42],29,[511,512,44,279,513,42],"44293957",30,"the__alchemist",[226,515,44,472,227,42],31,[126,517,18,450,127,42],32,[171,519,44,331,172,42],33,[156,521,44,331,157,42],34,[201,523,44,331,202,42],35,[525,523,42,267,526,42],"44293398","bitpush",[528,523,42,267,202,42],"44293457",[530,523,42,400,11,46],"44296174",[532,523,18,533,202,42],"44300036","maker\u002Fpositive\u002Fnone",[85,535,42,282,86,42],36,[537,538,44,279,539,42],"44292551",37,"mkesper",[541,538,42,270,11,46],"44292588",[543,538,44,279,513,42],"44294711",[545,546,44,472,547,42],"44295390",38,"asadawadia",[549,546,42,267,550,42],"44297867","jdsleppy",[552,553,18,533,411,42],"44294627",39,[555,556,18,557,558,42],"44293374",40,"project\u002Fpositive\u002Fdesign","jambay",[205,560,46,397,206,42],41,[562,563,44,472,564,42],"44297051",42,"nylonstrung",[566,567,18,316,568,42],"44293638",43,"yarone",[570,571,42,282,572,42],"44293470",44,"tiffanyh",[574,575,46,397,294,42],"44299781",45,[577,575,42,267,578,42],"44299977","aloknnikhil",[580,575,42,267,294,42],"44314188",[582,575,44,472,473,42],"44300097",[584,575,42,282,294,42],"44314150",[586,575,42,282,587,42],"44300264","overfeed",[589,575,42,282,294,42],"44314205",[],[592,597,602,606,611,615],{"id":593,"name":594,"points":595,"category":596},"44309320","Workout.cool",827,"consumer_social",{"id":598,"name":599,"points":600,"category":601},"44314085","Unregistry",726,"dev_tools",{"id":603,"name":604,"points":605,"category":601},"44293260","Chawan",387,{"id":607,"name":608,"points":609,"category":610},"44256765","Tritium",312,"productivity",{"id":612,"name":613,"points":614,"category":601},"44306041","Lstr",227,{"id":616,"name":617,"points":618,"category":619},"44284871","Zeekstd",214,"languages",false,"v2",{"id":623,"name":5,"line":6,"ai":620,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":624,"top":18,"kw":625,"maker":11,"domain":10,"tier":19,"attempts":42,"strip":626,"url":9,"mix":627,"praise":108,"objection":131,"sub":21},44292103,0.03,[24,25,26,27,28],"5350000113500000313123515123332435334513",[32,33,34,35],1794036676789]