[{"data":1,"prerenderedAt":299},["ShallowReactive",2],{"project-37132651":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":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":42,"post_text":43,"what":44,"said":78,"maker_in_thread":153,"shape":163,"grid":167,"attempts":261,"same_week":262,"maker_shows":196,"maker_hidden":291,"reader_version":292,"card":293},"37132651","Servicer","Servicer, pm2 alternative built on Rust and systemd","title","Show HN: Servicer, pm2 alternative built on Rust and systemd","https:\u002F\u002Fservicer.dev","servicer.dev","shardulaeer",1692099266,2023,147,37,424,3109,14,"notable","dev_tools","process manager cli","cli",[24,25,26,27],"systemd","pm2 alternative","service manager","systemd cli","debated",0.037,{"positive":31,"neutral":32,"mixed":33,"critical":34},4,6,1,5,16,{"idea":37,"docs":39,"execution":41},{"positive":38,"critical":34},3,{"positive":40,"critical":40},0,{"positive":33,"critical":40},[40,40,38,40,40,38,40,40,40,40,40,33,40,38,40,38,40,38,33,40,40,33,40,34,38,33,40,34,40,33,40,40,34,38,34,40,40],"Servicer is a CLI to create and manage services on systemd. I have used pm2 in production and find it easy to use. However a lot of its functionality is specific to node.js, and I would prefer not to run my rust server as a fork of a node process. Systemd on the other hand has most of the things I need, but I found it cumbersome to use. There are a bunch of different commands and configurations- the .service file, systemctl to view status, journald to view logs which make systemd more complex to setup. I had to google for the a template and commands every time.\n\nServicer abstracts this setup b",{"problem":45,"audience":54,"pricing":62,"motivation":63,"time_to_build":62,"stack":68,"openness":76,"stage":77,"team_size":77},{"value":46,"source":47,"evidence":48},"systemd service setup is cumbersome: unit file templates, many commands, and daemon-reload","maker",[49,51],{"id":50},"post",{"id":52,"by":11,"text":53},"37134651","I built the tool simply to improve developer experience. Run `systemctl list-units` and the console is flooded with a wall of services, most of them are not mine. Run `ser…",{"value":55,"source":56,"evidence":57},"developers deploying Node, Python or Rust services on Linux who find systemd hard to use","inferred",[58,59],{"id":50},{"id":60,"by":11,"text":61},"37134908","I think it's more about ease of use and developer experience. I agree that in the current state servicer is a proxy to systemd, anything you can do here you can do on systemd.…",null,{"value":64,"source":47,"evidence":65},"improve developer experience over systemd and pm2 for non-Node services",[66,67],{"id":52,"by":11,"text":53},{"id":60,"by":11,"text":61},[69,73],{"value":70,"source":47,"evidence":71},"Rust",[72],{"id":50},{"value":24,"source":47,"evidence":74},[75],{"id":50},"open_source","unknown",{"praise":79,"objections":96,"requests":116,"questions":127,"alternatives":135},[80,88],{"value":81,"source":82,"evidence":83},"Daemonless design is a good idea","commenter",[84],{"id":85,"by":86,"text":87},"37135721","hpb42","Kudos for making it daemonless! I think Servicer can be a good starting point for people to learn how to use Systemd services and systemd-run. Systemd is huge and can be scary to…",{"value":89,"source":82,"evidence":90},"Useful for learning systemd and simplifies setup",[91,92],{"id":85,"by":86,"text":87},{"id":93,"by":94,"text":95},"37134570","tiborsaas","When I picked up Deno, I couldn't use it with PM2 so I ended up learning systemd which turned out to be quite easy. I like however the added tooling and dev-ux this tool…",[97,108],{"value":98,"source":82,"evidence":99},"Systemd already does this; the wrapper adds little",[100,104],{"id":101,"by":102,"text":103},"37134547","lopkeny12ko","I don't understand this. Why not just...use systemd? Is there something I'm missing here?",{"id":105,"by":106,"text":107},"37135786","markstos","> Kudos for making it daemonless! It uses the systemd daemon to manage the services. It's not clear what an additional service would do.",{"value":109,"source":82,"evidence":110},"Requires sudo and should support running as user",[111,115],{"id":112,"by":113,"text":114},"37134797","fellerts","Great tip. I would also couple it with the —-user flag so the service runs as your user. Stuff like this shouldn’t have root permissions anyway.",{"id":85,"by":86,"text":87},[117,123],{"value":118,"source":47,"evidence":119},"Add a --user flag",[120],{"id":121,"by":11,"text":122},"37135952","Thanks for the feedback! I'm certainly add a `--user` flag. One kind note though, the service being set up does not have root access. The value of `User=` is $SUDO_USER (hp- my…",{"value":124,"source":82,"evidence":125},"Document the supported interpreters on the landing page",[126],{"id":93,"by":94,"text":95},[128],{"value":129,"source":82,"evidence":130},"What made systemd cumbersome in practice",[131],{"id":132,"by":133,"text":134},"37134379","MuffinFlavored","> Systemd on the other hand has most of the things I need, but I found it cumbersome to use Could you please expand on this? From what I understand, to use systemd to deploy a…",[136,143,147],{"value":137,"source":82,"evidence":138},"systemd-run",[139],{"id":140,"by":141,"text":142},"37134430","qbasic_forever","You might like systemd's run command, it's a hidden little gem that basically does what your tool does--it turns some CLI params into a transient service file:…",{"value":144,"source":82,"evidence":145},"pm2",[146],{"id":93,"by":94,"text":95},{"value":148,"source":82,"evidence":149},"tome",[150],{"id":151,"by":106,"text":152},"37136008","As someone who knows systemd very well, my team of Mac-based devs did appreciate when I made something like this. I used a different framework, a precursor to Tome: ```…",{"comments":154,"answered":38,"key":155},8,[156,159,162],{"id":157,"text":158},"37134738","That's interesting! I wasn't aware of this command when I started working on servicer. Anyway, there are a couple of utilities like `ser status` and `ser which` which you might…",{"id":160,"text":161},"37135392","That's a good thought. `sudo` is needed for writing to `\u002Fusr\u002F`. The service being set up does not have root access. The value of `User=` is $SUDO_USER (hp- my regular non…",{"id":52,"text":53},{"commenters":164,"max_depth":31,"maker_replies":154,"first_comment_mins":165,"lifespan_hours":166},22,153,11,[168,170,172,174,176,179,182,185,188,189,193,195,198,200,203,205,207,210,212,215,218,221,223,225,229,231,232,234,236,238,239,241,245,248,252,255,257],[140,40,40,169,141,40],"other\u002Fneutral\u002Fidea",[157,40,40,171,11,33],"maker\u002Fneutral\u002Fnone",[112,40,38,173,113,40],"project\u002Fneutral\u002Fidea",[160,40,40,175,11,33],"maker\u002Fneutral\u002Fexecution",[177,40,40,178,106,40],"37135869","commenter\u002Fneutral\u002Fprivacy",[180,40,38,173,181,40],"37135697","esamatti",[183,40,40,169,184,40],"37137950","VTimofeenko",[186,40,40,169,187,40],"37138277","zamubafoo",[151,33,40,169,106,40],[190,33,40,191,192,40],"37136772","other\u002Fneutral\u002Fnone","moojd",[194,33,40,191,184,40],"37138000",[132,196,33,197,133,40],2,"project\u002Fcritical\u002Fidea",[52,196,40,199,11,33],"maker\u002Fpositive\u002Fidea",[201,196,38,202,133,40],"37135208","maker\u002Fneutral\u002Fdocs",[204,196,40,202,11,33],"37135459",[206,196,38,173,133,40],"37135526",[208,196,40,191,209,40],"37136457","fullstop",[211,196,38,173,106,40],"37135908",[213,196,33,197,214,40],"37134953","LoganDark",[216,196,40,169,217,40],"37134993","cpach",[219,196,40,191,220,40],"37135116","rcxdude",[222,196,33,197,214,40],"37135740",[224,196,40,169,106,40],"37135827",[226,196,34,227,228,40],"37139989","project\u002Fpositive\u002Fidea","ripley12",[85,38,38,230,86,40],"project\u002Fmixed\u002Fidea",[105,38,33,197,106,40],[121,38,40,233,11,33],"maker\u002Fneutral\u002Fprivacy",[93,31,34,235,94,40],"project\u002Fpositive\u002Fexecution",[237,31,40,202,11,33],"37134680",[101,34,33,197,102,40],[60,34,40,240,11,33],"maker\u002Fneutral\u002Fidea",[242,34,40,243,244,40],"37140271","other\u002Fcritical\u002Fdesign","flemhans",[246,32,34,227,247,40],"37138906","srivmutk",[249,250,38,173,251,40],"37137078",7,"_nalply",[253,154,34,227,254,40],"37134196","thomasfromcdnjs",[256,154,40,171,11,33],"37135563",[258,259,40,191,260,40],"37137502",9,"kristianpaul",[],[263,268,273,278,282,287],{"id":264,"name":265,"points":266,"category":267},"37125118","Outlines",854,"ai",{"id":269,"name":270,"points":271,"category":272},"37119942","Little Rat",555,"security_privacy",{"id":274,"name":275,"points":276,"category":277},"37083309","OFRAK Tetris",472,"games",{"id":279,"name":280,"points":281,"category":267},"37128293","AI-town",429,{"id":283,"name":284,"points":285,"category":286},"37114141","learndb-py",371,"learning_science",{"id":288,"name":289,"points":290,"category":20},"37075730","Applite",280,false,"v2",{"id":294,"name":5,"line":6,"ai":291,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":295,"top":18,"kw":296,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":297,"url":9,"mix":298,"praise":81,"objection":98,"sub":21},37132651,0.04,[24,25,26,27],"0030030000010303031001053105010053500",[31,32,33,34],1793991071843]